jfinal一对多查询返回数据封闭问题疑问

用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

2017-08-22 16:07

如果 mybatis 是这类 left jon 的 sql 返回值封装好了 List blog 的话,那也是在结果返回以后做的

在 jfinal 之中可以稍微写点代码对于返回结果再重组一下就可以了。而 jfinal 手册的 5.9 的例子确实是发起了两次 sql 请求,但那个 sql 与你在贴子中的 sql 是不同的,你在贴子中的 sql 在 jfinal 中也只执行一次 sql

JFinal

2017-08-22 16:08

建议你直接在 jfinal 之下用:
new User().find("select * from user a left join blog b on a.userid=b.userid")
得到结果以后,看一下里面的数据特点,自然就知道怎么将相关值封装成关联的 List 了

放牛娃

2018-01-16 21:42

解决了吗?如果解决了发出来

JFinal

2018-01-16 22:45

@放牛娃 手册里头有: http://www.jfinal.com/doc/5-10

放牛娃

2018-01-17 17:24

@JFinal 我按照文档做了关联,但是结果集没有看到关联表的数据

hghca

2018-06-20 21:16

@放牛娃 解决了吗?

彩色的人参

2018-07-30 15:47

@JFinal 能用一条sql语句和方法直接返回一个mode mode中有一个属性就是list已经封装好的多条数据吗

热门反馈

扫码入社