Spring boot +MyBatis 进行分页

Spring boot +MyBatis 进行分页,第1张

<project xmlns=">

PageHelperstartPage 方法调用后,后面必须有一个Mapper的查询方法,必须被消费掉。 否则会由于ThreadLocal的原因,当该线程被其他方法调用时被分页。 在文档中非常明确的写了分页插件的使用方法!

例如 一个门店  对应多张   可正常使用PageHelper分页

PageHelperstartPage(page, size);

select

from cms_store 

limit 10,10  //正常单表查分页即可

</select>

<resultMap id="BaseResultMap" type="combearshcloudservicesomhecdomainCmsStore">

<result column="id" jdbcType="INTEGER" property="id" />

<result column="enable_status" jdbcType="INTEGER" property="enableStatus" />

<result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />

<select id="queryImagesList" resultType="combearshcloudservicesomhecdomainCmsStoreImage">

    select<include refid="Base_Image_Column_List">

    from cms_store_image csi

where csistore_id = #{id}

</select>

即1条主表记录 然后封装resultMap 里的cmsStoreImages属性时,会拿这条记录的id(不限于id y要拿什么值 输什么column)(所以column的值很重要!!) 来到select里去查对应的多条记录  

如果使用left join 一对多查询  则会产生多条记录  例如一个门店有3条记录

则本来要查的门店应该是一条不重复记录 结果统计数据的时候却统计了3条 虽然最后mybatis会封装到1条主表数据里

这会造成两个问题: 1:总条数不准 2查询10条主表数据 mybatis组合封装后只返回了 三四条主表数据

解决:先对主表进行分页查询 然后left join 从表

select from

(select from cms_store  limit 10) cs

left join cms_store_image csi on csid = csistore_id  即可查询一对多且 一的条数为10条

总记录数需要另外统计

场景:表A和表B是1对多关系,分页查询表A的20条记录。

处理:不用PageHelper,先按条件count表A,计算offset。

注意:如果两个表中的字段名相同,list'中只有一条记录,可以在resultMap中用别名来解决,这里是不取这个字段。

以上就是关于Spring boot +MyBatis 进行分页全部的内容,包括:Spring boot +MyBatis 进行分页、springboot 怎么分页并且条件查询、并没有使用pagehelper进行分页查询,为什么还是调用了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9384105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存