PageHelper关于Mybatis一对多查询返回Total错误

PageHelper关于Mybatis一对多查询返回Total错误

遇到的问题:
pagehelper进行一对多查询时,返回的总数量对不上,例如需求是一个页面展示10个spu信息,实际上只展示了6个spu,其分页的依据是根据sku,6个spu中包含了10个sku。究其原因是因为Mybatis中的一对多查询映射问题造成的。
数据表:
tb_refund_order,tb_refund_order_item.两张表间是一对多的关系。
PageHelper关于Mybatis一对多查询返回Total错误_第1张图片
PageHelper关于Mybatis一对多查询返回Total错误_第2张图片

Mybatis中一对多关系查询可以分两种方式查询:
1,(正确解决)一种方式是先查询主表,获取到主表id,再通过主表id从子关联表中查询子信息列表,这种方式要和数据库交互两次,发出两次SQL语句,但是数据库返回的数据没有冗余;
2,另一种方式是直接关联查询,只与数据库交互一次,只发出一次SQL语句,但是数据库返回数据存在主表信息冗余,冗余数据为主表内容,冗余次数为从表中满足条件的记录数

第一种方式查询:
PageHelper关于Mybatis一对多查询返回Total错误_第3张图片
PageHelper关于Mybatis一对多查询返回Total错误_第4张图片
PageHelper关于Mybatis一对多查询返回Total错误_第5张图片

第二种方式查询:(结果会被折叠)
一次请求查询两张表
PageHelper关于Mybatis一对多查询返回Total错误_第6张图片
PageHelper关于Mybatis一对多查询返回Total错误_第7张图片

你可能感兴趣的:(Java记录)