2018-07-18 17:24
@112313 通过往 getSqlPara 方法中传入参数即可,表名可以通过 model._getTable().getName() 获取到
2018-07-18 17:23
@himans Generator 中有一个 setBaseModelTemplate(...) 可以指定生成 base model 的模板文件
你可以先将 com.jfinal.plugin.activerecord.generator 包下面原有的 base_model_template.jf 文件的内容复制出来,然后改改里面的 extends 后面的那个 Model 为你自己的 BaseModel,这样就实现了切换中间层的功能
记得搞定后回来分享一下: jfinal.com/share
2018-07-18 17:21
@Iwengogo jfinal 的 sql 管理功能是一大特色,用模板引擎来管理 sql 的方案,直接秒杀掉 mybatis 用 XML 管理 sql 的方案:
http://www.jfinal.com/doc/5-13
2018-07-18 17:17
@wang #number 这个指令的那个 pattern 参数,直接搜索关键字:DecimalFormat,规则就是 java 中的 DecimalFormat
2018-07-18 17:15
@威仔 生成器一样也可以配置方言:
generator.setDialect(new SqlServerDialect());
下载首页的 jfinal demo,里面的生成器就有这个配置
2018-07-18 16:13
@lveRen 自己仿照现有 API 写一个也很容易,其就是找好参数,然后发个请求
2018-07-18 16:12
interceptor.add(...) 方法与 interceptor.addGlobalActionInterceptor(...) 这两个方法在功能上是完全一样的
interceptor.add(...) 这个方法本应该不存在,只是为了兼容历史版本才没有去掉
所以解决办法就很清楚了:将你代码中的 interceptor.addGlobalActionInterceptor(...) 与 interceptor.add(...) 这两行代码交换下位置即可
原因是拦截器的拦截是有先后次序的,先添加的先拦截,所以你的事务拦截器应该放在后面去,这样才能让回滚出于内层,内层再抛出异常时,正好是外层你希望的 ExceptionInterceptor 接手
2018-07-18 16:08
@himans 扩展一个中间层是最好的办法
大至上是:自建一个 public class BaseModel extends Model,然后所有原来继承 Model 的那些类改成继承 BaseModel,也就是改一下 BaseModelGenerator 生成器的模板中的那个类文件而已
在这个 BaseModel 中添加一些你认为很常用的方法
2018-07-18 16:05
@flash866 你的上个回复引出了我的上个回复中的 “还有很多别的考虑” 中的其中一种
假定增加一个 columns 参数或者方法来限定字段,你仍然也是要写字段的,然后再将这个与现在的 jfinal 方案对比一下:
Db.find("select clumns... from tableName where ....", ...);
对比之后,你发现你的方法只是少写了一个 tableName 而已,但用户是需要增加学习成本的,而原生的 sql 对于用户来说是固定的一次性成本,无论以后再来什么功能,也不需要增加成本
此外还有性能的原因,你的解决方案肯定无法避免字符串拼接,这个都是要分配内存的,而 jfinal 现有方案, sql 几乎不用拼接,或者只有少量拼接
2018-07-18 15:58
@威仔 你用的 sqlserver , 应该要配置它的方言:
arp.setDialect(new SqlServerDialect())
不要使用 AnsiSqlDialect,这个是为 jfinal 里面默认没有方言的数据库准备的
2018-07-18 15:56
@Didier 你写的就是对的,就是 #if (d_id != 0 ) ... #end
之所以不对,可能是别的原因
再说了,没看到任何异常,外人无法判断