最近在用jfinal重构一个老项目并添加一些新功能.这个老项目是用spring封装了一些乱七八糟的东西做的,全是坑.现写几个遇到的与jfinal有关问题.
oracle的 NUMBER 字段无论设置多长自动生成 BigDecimal,只能去手动修改baseModel,改成相应的 int 或是long.没有找到好的解决办法.
设计表的坑主,所有的字段都是大写,大写也就算了,下划钱分隔也没有.在renderJson的时候,model的key全被转成小写,而record的key会被转成大写. 当在config里设置
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
所有的key会被转成小写.但是遇到一个新问题,比如:我在一个model添加一个llist myModel.put("studentList",studentList);
最后renderJson时 "studentList" 也会被转成全小写: "studentlist".最后只得重写JFinalJson 一个个排除这种情况.还是这个坑主数据库字段是date格式,给前端的是时间戳.这个最后也是重写JFinalJson解决的.
求波总等在神指点,以上有没有更好的解决?
项目:JFinal
1: number 字段映射问题可以通过继承 MetaBuilder ,对于 BigDecimal 类型生成 Integer 或者 Long 类型。 MetaBuilder 中所有方法都是可以覆盖并定制的。具体到 oracle 的 number 类型,还可以得到其精度,选择生成 Integer、Long、BigDecimal
2:oralce 的字段一定要用下划线分隔,否则生成器生成 getter、setter 方法时就不好处理,因为生成器是无法知道你的多个单词的分界点的,除非先准备一个分词文件,然后利用分词器进行单词的分割,做到是可以做到,就是麻烦
CaseInsensitiveContainerFactory 这个不建议使用,如果要用也不建议传入 true/false构造方法的参数,让构造方法参数留空
3:date 格式这个,只要配置好 datePatter 就可以了,me.setJsonDatePattern(...)。 建议使用 jfinal 3.4版本,因为老版本的这个配置对于 JFinalJson 实现无效