2016-12-11 11:55

创建一个public class MyDialect exnteds MysqlDialect 覆盖掉其中的 replaceOrderBy 方法,在方法体中直接放一行代码 return sql ,然后通过 arp.setDialect(new MyDialect()) 使用自己扩展的方言取而代之即可

原因是分页方法会生成一个查询分页总记录的 sql,为了提升性这个 sql 会利用正则将 order by 子句去掉,因为查询总记录与 order by 子句无关,而 order by 语句可以是极其复杂的,目前的正则无法完全覆盖

jfinal 2.3 已彻底解决此问题

2016-12-10 18:44

oracle 将字段转成了 BigDecimal,所以 getInt 会报类型转换错误,建议定制一个 BaseModel extends Model,将其中的 getInt方法覆盖掉,改为 return getNumber(attr).intValue() 这样就支持所有数值类型了

然后生成器生成的 XxxBaseModel 从以前的继承 Model 改为继承自你自己定义的 BaseModel

2016-12-10 18:41

@柒爱 Db.tx(...) 支持事务,手动 jdbc 就是自行获取连接,用纯 jdbc 的操作方式来做

2016-12-10 16:03

最好用 Db,一个 sql 全搞定:Db.update("delete from a_r where admin_id=? and rol_id=?", adminId, roleId)

如果不用 Db 的话,可以手动连下 jdbc,然后发条 sql 删也是一样的

2016-12-10 14:43

model.deleteById(id1, id2)

2016-12-10 10:16

@fangjunai 如果要可写,那要考虑的事情就多多了,jfinal 会为了保持极简性而权衡不去实现一些用得比较少的功能,这部分功能留给大家自由发挥

2016-12-10 10:15

这段代码历史比较久远,细节已然记不清,大致是有些 jar 包不需要被加载或者路径不对,可以用上述的方式过滤这些 jar 包,或者转换目录

2016-12-09 19:39

原因是 paginate 方法会直接使用 "select count(*) ...." 去查询分页需要的总记录条数,这时就丢弃了 distinct 关键字,外层套一个 select * 就没事

2016-12-09 19:35

写个全局拦截器,拦截所有你需要一键关闭的这些个接口,该拦截器里面放个开关变量,大致如下:

public class EnableApiInterceptor implements Interceptor {
private static boolean enableApi = true;
public void intercept(Invocation inv) {
if (enableApi){
inv.invoke();
} else {
inv.getController().renderText("Api closed");
}

// 外界控制开关变量方法
public static void setEnableApi(boolean idEnable) {
enableApi = isEnable;
}
}

然后在后台管理做个 action 调用一下 EnableApiInterceptor.setEnableApi(...) 即可控制,当然还可以通过直接在 url 中传参的方式控制,要活学活用

2016-12-09 19:30

PropKit 最初设计目标是加载外部配置文件,没有提供写入功能

2016-12-09 19:29

@zhaozhihong 又一个入坑的,这里是出坑的办法:https://my.oschina.net/jfinal/blog/353062

2016-12-09 19:28

补充一下,如果你仍然希望是 A 定时启动 B,仍然按照这个贴子来也是可以的,只是 B 根本没有必要存在:http://www.jfinal.com/share/37

2016-12-09 19:27

你希望是定时任务 A,定时启动另一个定时任务 B,只要合理安排好定时任务 A,那么定时任务 B 不需要存在

具体方法见这个贴子:http://www.jfinal.com/share/37

2016-12-09 19:25

如果是 paginate 方法中使用 distinct,在外层套一个 select * from (原 sql ) as t 就可以了:
paginate(1, 10, "select *", "from ( select distinct ....) as temp", p1, p2,..., pn)

2016-12-09 17:27

@charlox 集群简单来说,只要做好多份数据的同步,或是避免数据多份从而使用共享数据即可

而 redis 之下,如果你只有一个 redis 服务端,那么天然就支持了分布式,如果是多个 redis 服务端,只需要利用 reids 的集群配置做好数据同步就好

jfinal 仅仅是一个 web mvc + orm 框架,所以集群问题在本质上与 jfinal 无关