MybatisPlus 联合或子查询分页

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

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

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

只需要创建相应的分页辅助类,查询条件构造器,再调用 this.page() 方法即可。

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

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

方法一

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

1)Mapper文件添加方法:

IPage<EntityfindByPage(IPage<Entitypage, @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<Entityresult = this.page(page, query);

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

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

方法二

1)Mapper文件添加方法:

IPage<EntityfindByPage(IPage<Entitypage, @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<Entityresult = this.page(page, userName);

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

AD: 【腾讯云服务器大降价】 2核4G 222元/3年 1核2G 38元/年
网站:阿蛮君博客
标题:MybatisPlus 联合或子查询分页
链接:https://www.amjun.com/1115.html
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!
THE END
分享
二维码
打赏
海报
MybatisPlus 联合或子查询分页
使用MybatisPlus对于数据库中的表,只需要建立相应的实体类就可以很方便的进行增删查改。 问题1:如果需要进行分页查询,需要怎么操作? // 创建分页辅助类 Pa……
<<上一篇
下一篇>>