如题, 我用jfinal用在swt程序中作为数据库连接使用, 在使用过程中动态根据返回的结果集来决定显示的字段, 通过
Db.use(ERP.ARPNAME).find(txtQuery.getText()) 获得结果集,
然后通过rs.get(0).getColumnNames()获得结果集里的字段数组, 发现字段的顺序是乱的, 检查发现是
com.jfinal.plugin.activerecord.IContainerFactory中使用的HashMap导致,
我修改了包里的的这个接口中的HashMap为LinkedHashMap后结果集里的字段顺序就是数据表的字段顺序了.
所以, 为什么IContainerFactory这里没有使用LinkedHashMap而是使用了HashMap? 输出的结果集里字段顺序跟数据表里的一致不是更好吗?
arp. setContainerFactory(new OrderedFieldContainerFactory());
没有使用 LinkedHashMap,是因为 HashMap 的性能更高。而大部分情况下开发者是不关心字段在 map 中的次序的,对于个性化需求使用上述配置即可