
springboot整合mybatisplus实现关联表查询(四)---关联查询多表查询关联分页查询(补充:<foreach>遍历,接收参数为对象,对象属性包含List)
发布日期:2021-05-26 12:02:15
浏览次数:24
分类:精选文章
本文共 2638 字,大约阅读时间需要 8 分钟。
MyBatis 多表关联查询与分页应用实践
通过前面三篇学习,我们掌握了MyBatis的基础CURD操作和分页查询技巧。然而,在实际开发中,单表操作往往无法满足复杂业务需求,因此掌握多表关联查询的能力至关重要。本文将从理论到实践,详细讲解多表关联查询与分页的应用。
多表关联查询的核心逻辑
多表关联查询的核心在于通过外键建立表之间的关系,MyBatis通过<association>
和<collection>
标签实现一对一、一对多等关系。与单表查询相比,关联查询的主要区别在于如何处理关联对象和集合对象。
实体类与数据传输对象的设计
在开始编写查询逻辑之前,需要先设计好实体类和数据传输对象(DTO)。对于妻子和用户的关系,我们创建了以下类:
@Data@TableName(value = "t_wife")public class Wife { private int wifeId; private int userId; private String wifeName;}@Datapublic class UserWifeDto { private Integer userId; private String userName; private Integer age; private Wife wife;}
MyBatis Mapper接口的定义
接下来,我们编写MyBatis Mapper接口,定义关联查询方法。以下是通过XML定义的方法:
测试类的编写与执行
为了验证我们的查询逻辑是否正确,我们编写了测试类RelationSelectTest
,以下是测试方法的实现:
@Testpublic void test2() { UserQueryModel userQueryModel = new UserQueryModel(); userQueryModel.setUserId(1); UserWifeDto userDto = userMapper.selectUserWifeXmlByAss(userQueryModel); System.out.println(userDto);}
分页查询的实现
在实际应用中,分页查询是必不可少的功能。我们通过MyBatis PageHelper实现分页,以下是新增的查询方法:
public interface UserMapper { PageselectOrdersPage(Page page, UserQueryModel userQueryModel);}
对应的XML定义如下:
测试分页查询
为了验证分页查询的正确性,我们在测试类中添加了以下测试方法:
@Testpublic void testPage1() { Page page = new Page(1, 3); UserQueryModel queryModel = new UserQueryModel(); queryModel.setUserId(1); queryModel.setNumber("100000"); PageuserPage = userMapper.selectOrdersPage(page, queryModel); System.out.println(userPage.getRecords() + "---" + userPage.getTotal());}
支持动态查询参数的实现
为了支持动态查询参数,我们在UserQueryModel
中添加了集合类型的字段:
@Datapublic class UserQueryModel { private Integer userId; private String userName; private Integer age; private String number; private ListageList;}
对应的Mapper方法如下:
public interface UserMapper { PageselectUsersByAges(Page page, UserQueryModel userQueryModel);}
XML定义如下:
总结
通过以上步骤,我们成功实现了多表关联查询与分页功能。在实际开发中,可以根据具体业务需求调整查询逻辑和分页参数,确保系统高效稳定运行。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月10日 04时52分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Length of Last Word
2025-04-05
Lenovo E47A Ubuntu闪屏解决办法
2025-04-05
Leopard系统装好后不能从硬盘引导的朋友看过来
2025-04-05
Lepus搭建企业级数据库全方位监控系统
2025-04-05
LESS 中的变量有什么作用?如何声明和使用变量?
2025-04-05
Less 日常用法
2025-04-05
Lettuce 移动框架 for Romantic
2025-04-05
let、const、var的四点区别( 代码示例 )
2025-04-05
LexPredict法律词典项目教程
2025-04-05
LF.73.Combinations Of Coins
2025-04-05
LFS最终幻想
2025-04-05
lftp命令详解
2025-04-05
lib/libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found (required by /lib/x86_64-linux-gnu/libLLVM-15
2025-04-05
libcurl 发送邮件_C++ 邮件推送 (smtp+libcurl+openssl)
2025-04-05
Libevent 事件管理和添加事件
2025-04-05
libevent-简单的定时器
2025-04-05
libevent在windows下使用步骤详解
2025-04-05
Libevent源码分析(一):最小堆
2025-04-05
libgdx的菜单配置,以及json文件的结构
2025-04-05