2019-06-12 22:32
其实异常信息已经很明确了,只有 List、数组、Map 才可以使用 index 表达式
所谓 index 表达式是指带有方扩号和下标的表达式,例如: map[123]、list[456]
而你的 incApply 是一个 model , 是决然不能使用 index 表达式的
至于 Db.query 方法,当 select 后方只有一个字段时返回 List 《Object》,当有多个字段时返回 List《Object[]》
Db.query 方法将原值返回数据不进行封装, 而 Db.find(...) 方法将返回值封装到 Record 对象中去
其实这些东东,单步调试看一下变量类型就全清楚了
了解 jfinal 最好的办法就是单步调试,看程序在动态中的行为与数据
2019-06-12 17:57
@puzzle 存储过程要参考文档中的标准用法:https://www.jfinal.com/doc/5-16
2019-06-12 17:55
@iamdego
1:这里的 Blog、User 是所说的 Model
2:表关联这个地方,或许是 Model 中允许 new dao 出来的唯一的理由,其它情况都该在 Service 层中 new 出 dao 对象,文档中已补充了相关内容。以前写文档时没有考虑到这种情况,造成了矛盾
3:new User().dao() 是规范,由于 dao() 这个方法是 jfinal 后续版本添加的,所以文档没有及时更新这里
4:表关联方法写在 User extends Model 为好,因为在使用的时候调用更方便,而且在逻辑上属于数据库层面的事情,可以不必看成是业务有关的事(业务代码全写在 Service 中)
5:jfinal 的 Enjoy 引擎是与 Java 直接打通的,有方法就调,有public field 就取,不要犹豫
2019-06-11 20:03
@happyboy 那你将你自己项目中的东东 copy 到 jfinal 官网下载的 demo 中去,然后看能不能重现问题,如果不出问题了,证明是你项目的配置有问题
2019-06-11 18:06
@久伴轻尘 关于 Db + Record 的用法,我见过一个最让我映象深刻的用法
有个同学使用 Db + Record 做了一个通用的查询系统,通用到何等程度:
1:头部是一系列的下拉,可以选择表名、字段名、查询条件
2:头部还提供了输入框,针对于 sql 的 where 子句,可以输入查询条件
3:查询条件可以手动输,也可以通过下拉的方式选择字段、大于小于等于这些条件,连输入条件也可以省去
4:可以将某个搜索使用的条件保存下来,并为这个查询起个名次,下次查询的时候不必重复选择和输入查询数据
例如,他发现某个查询经常要去做,那么保存为 “今日订单”、“本周销售总额”,那么下次要查询的时候选择一下这个查询就可以省去手动输的麻烦
5:这位同学希望查询出来的结果是按 select 后的次序来显示的,所以配置了这个:
arp.setContainerFactory(new OrderedFieldContainerFactory());
有了这个查询系统,任何人都可以无比灵活地去查询整个库中的数据。 这个公司有了这个通用的查询系统,再也不必单独开发这样一个项目了,节省了很多成本
2019-06-11 17:40
@久伴轻尘 你这个也是动态生成的,那么字符 `` 就是必须的了
真正懂 jfinal 的人,jfinal 拿在手里就是效率利器