请教, 为何jfinal从数据库读取回来的数据集的字段顺序没有按照数据表的字段顺序排列

如题, 我用jfinal用在swt程序中作为数据库连接使用, 在使用过程中动态根据返回的结果集来决定显示的字段, 通过

Db.use(ERP.ARPNAME).find(txtQuery.getText()) 获得结果集, 

然后通过rs.get(0).getColumnNames()获得结果集里的字段数组, 发现字段的顺序是乱的, 检查发现是

com.jfinal.plugin.activerecord.IContainerFactory中使用的HashMap导致,

我修改了包里的的这个接口中的HashMap为LinkedHashMap后结果集里的字段顺序就是数据表的字段顺序了.

所以, 为什么IContainerFactory这里没有使用LinkedHashMap而是使用了HashMap? 输出的结果集里字段顺序跟数据表里的一致不是更好吗?


评论区

JFinal

2019-01-24 21:51

配置一下:
arp. setContainerFactory(new OrderedFieldContainerFactory());

没有使用 LinkedHashMap,是因为 HashMap 的性能更高。而大部分情况下开发者是不关心字段在 map 中的次序的,对于个性化需求使用上述配置即可

Mavenjay

2020-09-02 09:40

@JFinal Method[] methods = cls.getDeclaredMethods(); 反射方法里面,拿到方法数组列表 顺序也是乱序的 。。。 如何解决?