2020-07-17 12:31
@jounzhang 改主键值通常是错误的,因为别的 table 很可能早有很多数据与该主键进行了关联,从而会造成数据一致性问题。除非是很特殊的情况,一般不建议这么用
此外,改主键当然最好是用 Db.update(....) 来操作,无论是单主键还是多主键都十分方便。并且 Db.update(...) 还可以批量改主键,而 Model 要做到改主键的功能,只能一次改一个 model
2020-07-16 17:01
有个很重要的事情, 参数注入本质还是用的 getModel 与 getBean ,所以如果你用 getModel 工作正常,但参数注入不正常,只有一种可能, 那就是你的参数注入其实用的是下面这个:
getBean(...);
而不是用的 getModel
那么问题变成了, jfinal 的参数注入在什么情况下调用 getModel,什么情况下调用 getBean?
答案是如果你的 Pay.java 实现了 com.jfinal.plugin.activerecord.IBean 这个接口,就会使用 getBean,否则如果继承了 Model 就会使用 getModel,其它情况使用 getBean, jfinal 中的相关源代码如下:
if (com.jfinal.plugin.activerecord.IBean.class.isAssignableFrom(typeClass)) {
//实现了IBean接口,优先按BeanGetter来处理。
return new BeanGetter(typeClass, parameterName);
}
else if (com.jfinal.plugin.activerecord.Model.class.isAssignableFrom(typeClass)) {
return new ModelGetter(typeClass, parameterName);
}
else {
return new BeanGetter(typeClass, parameterName);
}
那么问题就可以最终确定为,你在表单域中的 order_id 没有对应到相应的 setter 方法
2020-07-15 18:15
@七五热 注意要调用 druidPlugin.stop() 与 arp.stop(), 才能释放资源
jfinal 之下这两个方法是框架自动调用的