
MyBatis_Plus联表分页查询
发布日期:2021-05-10 23:10:52
浏览次数:25
分类:精选文章
本文共 2654 字,大约阅读时间需要 8 分钟。
MyBatis_Plus 中的联表分页查询是一个常见需求,特别是在需要同时关联多个表并进行分页查询时。以下是实现联表分页查询的实用步骤说明。
一、创建自定义数据对象
首先,我们需要创建一个自定义的数据对象 UserInfoVO
,它将封装必要的实体数据和页面需要展示的字段。这个类将根据实际需求扩展,但通常包括以下字段:
import lombok.Data;import org.jeecg.framework 달리;@Datapublic class UserInfoVO extends UserInfo { // 除了原userInfo的字段外,再添加一些关联字段,例如角色名称 private String roleName;}
二、定义数据库查询映射
在 UserInfoMapper.xml
中定义数据库查询映射文件。由于MyBatis_Plus提供了强大的拆解功能,我们可以直接使用自定义的 sql
标签来执行复杂的 SQL 语句。
SELECT su(id, username, sex, user_identity, user_company, status, telephone, avatar, email, realname, post, del_flag, create_time, sr.role_name) FROM sys_user AS su LEFT JOIN sys_user_role AS sur ON su.id = sur.user_id LEFT JOIN sys_role AS sr ON sur.role_id = sr.id WHERE su.del_flag = 0 AND su.username LIKE '%#{username}%' AND su.realname LIKE '%#{realname}%' AND su.status LIKE '%#{status}%' ORDER BY su.create_time DESC
三、实现分页查询逻辑
在 UserInfoServiceImpl.java
中,实现分页查询的业务逻辑。我们可以使用 MyBatis_Plus 提供的 PageHelper
或其他分页工具来完成。
import org.jeecg.module(sys.user.entity.SysUser);import org.jeecg.module.sys.user.mapper.UserInfoMapper;import org.jeecg.framework Pagination;import org.springframework.beans.factory.annotation.Autowired;public class UserInfoServiceImpl { @Autowired private UserInfoMapper userInfoMapper; public Page queryUserList(Page page, QueryWrapper wrappingQuery) { return userInfoMapper.getUserList(null, null, null, page, wrappingQuery); }}
四、使用控制器调用分页查询
在 UserController.java
中,调用 serviceImpl 的分页方法,并返回结果。通常,控制器代码如下:
import org.springframework.stereotype.Controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.AutowiredResource;@Controllerpublic class UserController { @Autowired private UserService userInfoService; public Response onViewList(@ModelAttribute SysUser sysUser, Page page, QueryWrapper queryWrapper) { PageÌ PageuserPage = userInfoService.getUserList(sysUser.getUsername(), sysUser.getRealname(), sysUser.getStatus(), page, queryWrapper); return Result.ok(userPage); }}
五、分页总页数计算
为了提高查询效率,可以在 MyBatis 中添加一个计算总页数的方法:
public int countTotalUser() { return userInfoMapper.countTotalUser();}
六、处理自定义查询参数
如果需要根据具体需求添加自定义查询参数,可以在 QueryWrapper
中添加这些参数。例如:
QueryWrapper.create() .like("username", "%{username}%") .like("realname", "%{realname}%") .eq(SysUser::delFlag, 0);
通过这样的步骤,我们可以实现一个高效且灵活的多表分页查询框架。这种方法不仅能够满足日常的分页需求,还适用于复杂的联表场景。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年05月08日 22时01分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
图像质量评估仿真
2019-03-22
uni-app快速导入自己需要的插件
2019-03-22
作为公共组软件工程师如何工作
2019-03-22
uni-app 微信支付
2019-03-22
编写xor_shellcode.py
2019-03-22
Echarts笔记
2019-03-22
Ubuntu 20.04 Docker 安装并配置
2019-03-22
[小技巧]新建txt菜单
2019-03-22
【问答23】Linux移植:如何制作rootfs?
2019-03-22
Java虚拟机详解(五)------JVM参数(持续更新)
2019-03-22
在 eclipse 中将 web 项目部署到 tomcat 服务器上
2019-03-22
iOS关于申请公司开发者账号缴费支付
2019-03-22
10-3 A1-4在产品表中找出库存数量大于50的产品的信息 (20 分)
2019-03-22
桜の木になろう
2019-03-23
Python 存储和读取ASCII码形式的byte数据
2019-03-23
Ajax学习笔记-错误的处理-7
2019-03-23
SparkStreaming利用队列生成测试数据源
2019-03-23
js——BOM操作知多少?
2019-03-23
划分子网与NAT的区别。。。
2019-03-23
信号量机制
2019-03-23