服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - springboot整合mybatis-plus实现多表分页查询的示例代码

springboot整合mybatis-plus实现多表分页查询的示例代码

2021-08-21 16:11团子. Java教程

这篇文章主要介绍了springboot整合mybatis-plus实现多表分页查询的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.新建一个springboot工程

2.需要导入mybatis和mybatis-plus的依赖文件

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.1.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.mybatis.spring.boot</groupId>
  8. <artifactId>mybatis-spring-boot-starter</artifactId>
  9. <version>2.0.1</version>
  10. </dependency>

3.application.yml配置文件

  1. server:
  2. port: 8080
  3. spring:
  4. datasource:
  5. url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
  6. username: root
  7. password: 数据库密码
  8. mybatis:
  9. mapper-locations: classpath*:mapper/*.xml
  10.  
  11. mybatis-plus:
  12. mapper-locations: classpath:/mapper/*Mapper.xml
  13. logging:
  14. level:
  15. com.tuanzi.*: debug

4.首先我们需要写一个类来配置分页插件

  1. 省略import
  2. @EnableTransactionManagement
  3. @Configuration
  4. @MapperScan("com.tuanzi.*.mapper*")
  5. public class MybatisPlusConfig {
  6.  
  7. /**
  8. * 分页插件
  9. */
  10. @Bean
  11. public PaginationInterceptor paginationInterceptor(){
  12. return new PaginationInterceptor();
  13. }
  14. }

5.controller类

  1. @RestController
  2. @RequestMapping("/user")
  3. public class UserController {
  4.  
  5. @Autowired
  6. UserService userService;
  7.  
  8. /**
  9. * 多表关联,分页查询(1对1)
  10. * @param page
  11. * @return
  12. */
  13. @RequestMapping("/findAll")
  14. public Result<IPage<User>> findAll(@RequestBody Page<User> page){
  15.  
  16. return userService.pages(page);
  17.  
  18. }
  19.  
  20. /**
  21. * 多表关联,分页查询(1对多)
  22. * @param page
  23. * @return
  24. */
  25. @RequestMapping("/selectAll")
  26. public Result<IPage<User>> selectAll(@RequestBody Page<User> page){
  27.  
  28. return userService.pageList(page);
  29.  
  30. }
  31. }

6.service类

  1. public interface UserService extends IService<User> {
  2.  
  3. Result<IPage<User>> pages(Page<User> page);
  4.  
  5. Result<IPage<User>> pageList(Page<User> page);
  6. }

7.service实现类

  1. @Service
  2. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  3.  
  4. @Autowired
  5. UserMapper userMapper;
  6. @Override
  7. public Result<IPage<User>> pages(Page<User> page) {
  8. IPage<User> userIPage = userMapper.Pages(page);
  9. return Result.getSuccess("分页查询成功",userIPage);
  10. }
  11.  
  12. @Override
  13. public Result<IPage<User>> pageList(Page<User> page) {
  14. IPage<User> userIPage = userMapper.pageList(page);
  15. return Result.getSuccess("分页查询成功",userIPage);
  16. }
  17. }

8.mapper接口

注意!!: 如果入参是有多个,需要加注解指定参数名才能在xml中取值

  1. @Mapper
  2. @Repository
  3. public interface UserMapper extends BaseMapper<User> {
  4.  
  5. IPage<User> Pages(@Param("page") Page<User> page);
  6.  
  7. IPage<User> pageList(@Param("page") Page<User> page);
  8. }

9.xml文件

一对一关联

  1. <!-- 一对一 通用查询映射结果 -->
  2. <resultMap id="BaseResultMap1" type="com.tuanzi.user.entity.User">
  3. <result column="id" property="id" />
  4. <result column="name" property="name" />
  5. <result column="age" property="age" />
  6. <result column="email" property="email" />
  7. <!--assocication 一对一关联查询
  8. 可以指定联合的JavaBean对象
  9. property="work"指定哪个属性是联合的对象
  10. javaType:指定这个属性对象的类型
  11. -->
  12. <association property="work" javaType="com.tuanzi.user.entity.Work">
  13. <result column="id" property="id" />
  14. <result column="position" property="position" />
  15. <result column="user_id" property="userId" />
  16. </association>
  17. </resultMap>

一对多关联

  1. <!-- 一对多 通用查询映射结果 -->
  2. <resultMap id="BaseResultMap2" type="com.tuanzi.user.entity.User">
  3. <result column="id" property="id" />
  4. <result column="name" property="name" />
  5. <result column="age" property="age" />
  6. <result column="email" property="email" />
  7. <!--
  8. collection定义关联结合类型的属性的封装规则
  9. property="workList"指定哪个属性是联合的对象
  10. ofType:指定集合里面元素的类型
  11. -->
  12. <collection property="workList" ofType="com.tuanzi.user.entity.Work">
  13. <result column="id" property="id" />
  14. <result column="position" property="position" />
  15. <result column="user_id" property="userId" />
  16. </collection>
  17. </resultMap>

SQL语句:

  1. <select id="Pages" resultMap="BaseResultMap1">
  2. select a.id id,a.name name,a.age age,a.email email,b.position position,b.user_id user_id from user a LEFT JOIN work b on a.id=b.user_id
  3. </select>
  4. <select id="pageList" resultMap="BaseResultMap2">
  5. select a.id id,a.name name,a.age age,a.email email,b.position position,b.user_id user_id from user a LEFT JOIN work b on a.id=b.user_id
  6. </select>

10.这样就基本完成了!我这里省略了实体类

我们运行一下,用postman测试一下结果
这里我们需要传2个参数,当然我们也可以不用传,因为mybatis-plus有默认值
来看下mybatis-plus的page源码

springboot整合mybatis-plus实现多表分页查询的示例代码

效果图:

springboot整合mybatis-plus实现多表分页查询的示例代码

springboot整合mybatis-plus实现多表分页查询的示例代码

最后附赠源码地址:demo

到此这篇关于springboot整合mybatis-plus实现多表分页查询的示例代码的文章就介绍到这了,更多相关springboot整合mybatis-plus多表分页查询内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_42370891/article/details/93061955

延伸 · 阅读

精彩推荐