2016-07-27 17:37
@bufan 绕开了paginate 方法,而是使用 Db.queryLong(...) 以及 model.find(...) 方法查询当前页的内容,前面是手误打错字了,本意是指 "model.find(...)"
2016-07-27 16:42
@bufan jfinal 2.2 引入了 BaseModelGenerator,为 model 生成 getter、setter 方法,除了开发者喜欢使用以外,还有一个很重要的原因是支持一些第三方的,依赖于 getter、setter方法的工具或框架。当有了 getter 以后,如果 getAttrValues() 不添加下划线,会被认定为一个 getter 方法来处理,引来一些不必要的问题。
例如 Fastjson 在转换的时候会先将一些常规则 getter 方法得到的数据转成 json,然后再会将 getAttrValues() 得到的数据再转一次,这是没有必要的
2016-07-27 16:37
@bufan order by 替换使用的正则无法覆盖掉那些比较偏的用法,例如 order by 中用到一些 sql 函数的情况,造成错误。如果加强正则的匹配能力,则性能急剧下降,所以对于此类 sql,可以使用一下 Db.queryLong(...) 查询总记录数,然后再使用 model.find(...) 方法查询当前页的数据,实现分页的功能。相当于是多写几行代码来代替 paginate 的功能
2016-07-27 11:45
@Andydmx 严格来说 "null" 是字符串,null 是常量,这个是完全不同的概念,如果处理不当会出奇奇怪怪的问题。为了区分新加还是编辑,其实可以很简单地通过 id 是否为 null来判断一下,如果是 null 调用一下 model.remove("id") 然后再 model.save(),如果为非 null,直接 model.update() 即可
2016-07-27 11:40
@Andydmx 方言是否设置了:arp.setDialect(new PostgreSqlDialect()),并且 jfinal 用的哪个版本呢?
2016-07-27 11:13
@yigegeman 你没映射啊??? arp.addMapping(...) 或者 _MappingKit.mapping(arp),建议先仔细看完手册,再开始开发,少走很多弯路
2016-07-27 11:02
@yigegeman 方便啊,单元测试不是有个 setup() 方法吗? 这个就是专门为测试做准备的啊,在这个 setup() 方法中启动 ActiveRecordPlugin,启动方法在手册中有
2016-07-27 10:08
@yigegeman 网页你启动了 web 项目,jfinal 调用了 configPlugin 中的 ActiveRecordPlugin 初始化。而你上面这个是测试用例,看下手册中有关 ActiveRecordPlugin 用于非 web 环境的章节