首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
求助DB.find()查找数据库顺序
deron_cao
2017-12-21 11:04
使用db.find()方法查找数据库的数据顺序为什么不是按照数据库的表的顺序呢?怎么解决?
项目:
JFinal
评论区
JFinal
2017-12-21 13:11
jfinal ActiveRecord 支持保持 select 出来的字段次序,只需要下面一行配置即可:
activeRecordPlugin.ContainerFactory(new OrderedFieldContainerFactory());
回复
deron_cao
2017-12-22 08:43
谢谢,你那个方法可以设置保持顺序。
arpManagement.setContainerFactory(new OrderedFieldContainerFactory());
arpManagement.setContainerFactory(new CaseInsensitiveContainerFactory(true));后面设置大小写的时候会覆盖前面的字段排序设置,想同时设置怎么办?
回复
JFinal
2017-12-22 11:31
@deron_cao
结合一下 OrderedFieldContainerFactory、CaseInsensitiveContainerFactory 这两份代码,自己做一个自己的 MyContainerFactory 即可
要活学活用
回复
deron_cao
2017-12-22 14:33
感谢,我会研究一下的怎么封装的。
回复
JFinal
2017-12-22 14:41
@deron_cao
这里头有一个矛盾,实现字段的按次序排列用的是 LinkedHashMap 而实现不区分大小写用的是 TreeMap,只能用到一个
所以,在实现的时候应该选择 LinkedHashMap,然后再自己手写代码来支持不区分大小写的功能,这个手写的办法在老版本的 jfinal 2.0 中早就有了,看下这里:
https://gitee.com/jfinal/jfinal/blob/jfinal-2.0/src/com/jfinal/plugin/activerecord/CaseInsensitiveContainerFactory.java
结合 jfinal 2.0 源码中的作法与 OrderedFieldContainerFactory 中的 LinkedHashMap 用法就可以搞定了
回复
JFinal
2017-12-22 14:42
补充一点:不建议使用 CaseInsensitiveContainerFactory,而是用 jfinal 生成器生成驼峰型的 getter、setter 方法,自然就消解了这个问题
生成器可以在首页下载 jfinal demo,里头有一个 JFinalDemoGenerator
回复
deron_cao
2017-12-23 15:26
@JFinal
好的,谢谢詹总,我明白了
回复
Jerry_for_java
2020-06-03 11:14
@JFinal
用Db.template().find()时配置了setContainerFactory,但还是乱序?
回复
JFinal
2020-06-03 11:42
@Jerry_for_java
配置这个是可以的,估计是别的原因,单步调试跟踪一下:
activeRecordPlugin.ContainerFactory(new OrderedFieldContainerFactory());
回复
发送
我要反馈
热门反馈
扫码入社
activeRecordPlugin.ContainerFactory(new OrderedFieldContainerFactory());