用jfinal三年,一直有一个疑问。
之前用mybatis,在做一对多查询的时候,(以demo里面5.9表关联操作为例)可以直接一个sql:select * from user a left join blog b on a.userid=b.userid,然后配置xml:resultMap节点加collection,在user bean中声明一个List<blog>常量。这样,mybatis就可以直接把返回的结果封装成一个user对象。
像这个操作在jfinal里面是以demo5.9部分实现的。
我的疑问是如果按demo5.9的方法实现,是不是相当于,我先把所有的user查询出来,然后再按每个user的userid去循环查询一次blog。虽然这样实现看起来很清晰,但是性能上是不是有影响。因为一个left join语句跟多个sql语句执行,多次与数据库的io操作肯定是有区别的。
或者说jfinal是不是有这样返回数据的封装机制,只是说没有在demo里面体现。还请各路大神指点!
项目:JFinal
在 jfinal 之中可以稍微写点代码对于返回结果再重组一下就可以了。而 jfinal 手册的 5.9 的例子确实是发起了两次 sql 请求,但那个 sql 与你在贴子中的 sql 是不同的,你在贴子中的 sql 在 jfinal 中也只执行一次 sql