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;
}
@Data
public class UserWifeDto {
private Integer userId;
private String userName;
private Integer age;
private Wife wife;
}

MyBatis Mapper接口的定义

接下来,我们编写MyBatis Mapper接口,定义关联查询方法。以下是通过XML定义的方法:

测试类的编写与执行

为了验证我们的查询逻辑是否正确,我们编写了测试类RelationSelectTest,以下是测试方法的实现:

@Test
public void test2() {
UserQueryModel userQueryModel = new UserQueryModel();
userQueryModel.setUserId(1);
UserWifeDto userDto = userMapper.selectUserWifeXmlByAss(userQueryModel);
System.out.println(userDto);
}

分页查询的实现

在实际应用中,分页查询是必不可少的功能。我们通过MyBatis PageHelper实现分页,以下是新增的查询方法:

public interface UserMapper {
Page
selectOrdersPage(Page page, UserQueryModel userQueryModel);
}

对应的XML定义如下:

测试分页查询

为了验证分页查询的正确性,我们在测试类中添加了以下测试方法:

@Test
public void testPage1() {
Page page = new Page(1, 3);
UserQueryModel queryModel = new UserQueryModel();
queryModel.setUserId(1);
queryModel.setNumber("100000");
Page
userPage = userMapper.selectOrdersPage(page, queryModel);
System.out.println(userPage.getRecords() + "---" + userPage.getTotal());
}

支持动态查询参数的实现

为了支持动态查询参数,我们在UserQueryModel中添加了集合类型的字段:

@Data
public class UserQueryModel {
private Integer userId;
private String userName;
private Integer age;
private String number;
private List
ageList;
}

对应的Mapper方法如下:

public interface UserMapper {
Page
selectUsersByAges(Page page, UserQueryModel userQueryModel);
}

XML定义如下:

总结

通过以上步骤,我们成功实现了多表关联查询与分页功能。在实际开发中,可以根据具体业务需求调整查询逻辑和分页参数,确保系统高效稳定运行。

上一篇:postman笔记1--postman的安装教程
下一篇:elasticsearch java插入索引批量操作

发表评论

最新留言

不错!
[***.144.177.141]2025年05月10日 04时52分19秒