MybatisPlus 联合或子查询分页

289次阅读
没有评论

共计 1203 个字符,预计需要花费 4 分钟才能阅读完成。

使用MybatisPlus对于数据库中的表,只需要建立相应的实体类就可以很方便的进行增删查改。

问题1:如果需要进行分页查询,需要怎么操作?

// 创建分页辅助类
Page page = new Page(current, sieze);
...
// 条件构造器构造查询条件
QueryWrapper query = new QueryWrapper();
...
Page<Entity> result = this.page(page, query);

这样的操作仅能对单表进行查询,对于联表查询,这样是行不通的。此时可以做相应的修改即可。

问题2:联合查询的分页查询如何进行?

方法一

假设联合查询的条件为对用户名进行模糊匹配。

1)Mapper文件添加方法:

IPage<Entity> findByPage(IPage<Entity> page, @Param("ew") Wrapper wrapper);

Entity 为查询结果的映射类。

2)Mapper.xml 实现分页方法:

<select id="findByPage" resultMap="Entity">
    SELECT * FROM user
    LEFT JOIN student
    ON user.id = student.id
    ${ew.customSqlSegment}
</select>

${ew.customSqlSegment} 即代表查询条件。

3)Service 中调用方法:

// 创建分页辅助类
Page page = new Page(current, sieze);
...
// 条件构造器构造查询条件
QueryWrapper query = new QueryWrapper();
...
Page<Entity> result = this.page(page, query);

最后,即可像单表查询操作一样进行分页查询。

当然,如果不想使用条件构造器,也可以使用另外一种方式。

方法二

1)Mapper文件添加方法:

IPage<Entity> findByPage(IPage<Entity> page, @Param("userName") String userName);

Entity 为查询结果的映射类。

2)Mapper.xml 实现分页方法:

<select id="findByPage" resultMap="Entity">
  SELECT * FROM user
  LEFT JOIN student
     ON user.id = student.id
     <where>
         <if test="userName != null">
             user_name LIKE concat('%', #{userName}, '%')
         </if>
     </where>
</select>

3)Service 中调用方法:

// 创建分页辅助类
Page page = new Page(current, sieze);
...
Page<Entity> result = this.page(page, userName);

但是这种方式就没那么像MybatisPlus。

提醒:本文发布于501天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-03-09发表,共计1203字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock