项目中经常需要对数据库的查询结果进行进一步处理,以前需要对Model 和 Record区别进行处理,相同的算法得写两遍。
最近给波总建议可以让Model 和 Record实现一个共同的接口,类似DTO,相当于把ActiveRecord对象(Model 和 Record)降级为普通DTO对象。这样就可以通过这个统一接口来无差别地同时处理Model 和 Record了,最终波总在最新的JFinal 4.9.17中添加了IRow这个接口,代表数据库中一行记录。
具体使用如下:
定义一个通用的泛型处理算法。
public <M extends IRow> void autoSetDict(Collection<M> mList, String codeKey) { for (M m : mList) { String codeValue = m.getStr(codeKey); ... } }
Model的场景
List<User> users = User.dao.find("select * from user where age>18"); autoSetDict(users,"xb");
Record的场景
List<Record> users = Db.find("select * from user where age > 18"); autoSetDict(users,"xb");
感谢波总急速发布一版,又可以少些一些代码了。