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 10:16
@fangjunai 如果要可写,那要考虑的事情就多多了,jfinal 会为了保持极简性而权衡不去实现一些用得比较少的功能,这部分功能留给大家自由发挥
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:29
@zhaozhihong 又一个入坑的,这里是出坑的办法:https://my.oschina.net/jfinal/blog/353062
2016-12-09 17:27
@charlox 集群简单来说,只要做好多份数据的同步,或是避免数据多份从而使用共享数据即可
而 redis 之下,如果你只有一个 redis 服务端,那么天然就支持了分布式,如果是多个 redis 服务端,只需要利用 reids 的集群配置做好数据同步就好
jfinal 仅仅是一个 web mvc + orm 框架,所以集群问题在本质上与 jfinal 无关