2017-02-17 10:43

创建一个 public class MySqlServerDialect extends SqlServerDialect,然后覆盖一下 replaceOrderBy 方法,将 order by 的替换用上,相关代码在源码中都有

2017-02-17 10:42

很早以前的版本,getFile(...) 可以传入绝对路径。升级到 jfinal 3.0 解决一下

2017-02-16 19:29

@埋头苦干 自己扩展 MetaBuilder,使用固定的排序规则,不会再依赖 JDBC,与 JDBC 没有关系

例如,在 MetaBuilder 扩展类中,使用字典排序对复合主键进行排序,这个排序的结果是永远固定的

2017-02-16 19:05

让 paginate 方法减少一个参数即可,大致如下:
paginate(1, 10, "select *", "from user where age >18");

2017-02-16 17:38

@埋头苦干 这个方案并不彻底,例如:将建表语句中指定的双主键次序换一下然后建这张表,就有问题了

2017-02-16 15:33

注意一下,为 sql 管理模块的 Engine 添加指令需要使用如下代码:
ActiveRecordPlugin arp = ...
Engine engine = arp.getSqlKit().getEngine();
engine.addDirective(...);

也就是说 view 层与 active record 的 Engine 对象是不同的对象,这样设计可使各模块拥有各自不同的 Engine 对象,以免互相产生干扰

2017-02-16 15:23

指令是怎么添加的,直接修改这个贴子,贴出点代码来,此外,通过异常消息可知,该错误是由于 #sql 指令的参数需要是字符串

2017-02-16 14:55

@埋头苦干 最终是采用什么方案解决的,是强制再指定一次,还是通过扩展 MetaBuilder 解决的?

2017-02-16 14:53

@Irin.Chan 强烈建议使用阿里云,非常稳定可靠,买最便宜那款每年才几百块钱

2017-02-16 13:39

NoClassDefFoundError 这个是最基本的异常,添加上 jetty-8.18.jar 的依赖就好,下载首页的 jfinal-3.0_demo_for_maven 项目,参考一下 pom.xml 中的写法

如果 pom.xml 中确实配置好了,可能是 maven 下载文件时导致了文件出错,删掉该文件夹,重新下载即可

2017-02-16 13:37

用两个 Date 变量,一个存本月一号,一个存下个一号,假定这两个变量名为 start、end,用 sql 直接解决:
find("select * from xxx where createAt >= ? and createAt < ?", start, end);

这些是纯业务问题,几乎与 jfinal 无关

2017-02-16 13:32

@happyboy @SillyBoy jfinal-club 项目后台登录做得更彻底,压根就没有,最大化提升了安全性

2017-02-16 11:50

如果不将 Engine 独立出来,那么 sql 管理的 Engine 就会干扰到 view 层的 Engine,尤其是对命名空间会有污染

2017-02-16 11:49

@MisterJion 改成如下代码即可:
arp.getSqlKit().getEngine().addDirective("like", new PLike());

因为 configEngine(Engine me) 仅仅是配置的 view 层使用的 Einge,而 ActiveRecordPlugin 的 Engine 是独立的,不仅与 view 层独立,多数据源之间的 Engine 也是独立的,这样就可以极为灵活的去定制

2017-02-16 11:33

@埋头苦干 我是指在 MyMetaBuilder extends MetaBuilder 这个扩展类中,在得到复合主键的时候自己再使用一个特定的规则来处理,例如自己给排个序