当前位置:   article > 正文

Spring Boot整合MyBatis-Plus以及实现分页

Spring Boot整合MyBatis-Plus以及实现分页

MyBatis-Plus 是 MyBatis 的一个增强工具包,它在原有的 MyBatis 框架之上提供了更多便捷的功能和增强,有助于简化开发流程、提高开发效率。以下是 MyBatis-Plus 的一些主要特点和功能:

  1. CRUD 操作增强: MyBatis-Plus 提供了一套强大的 CRUD 方法,可以帮助开发者快速完成常见的数据库操作,无需编写繁琐的 SQL 语句,从而简化了数据访问的操作。

  2. 条件构造器: MyBatis-Plus 提供了灵活的条件构造器,可以方便地动态拼接 SQL 条件,支持链式调用,使得条件构造更加简单和灵活。

  3. 代码生成器: MyBatis-Plus 提供了代码生成器工具,能够根据数据库表结构自动生成 Entity、Mapper、Service、Controller 等代码,大大减少了开发者的工作量。

  4. 性能优化: MyBatis-Plus 对 MyBatis 进行了一系列的性能优化,提升了查询的效率和性能,使得系统更加稳定和高效。

  5. 自动填充: MyBatis-Plus 支持实体类字段的自动填充功能,可以在插入或更新数据时自动填充指定的字段,例如创建时间、更新时间等。

  6. 乐观锁和逻辑删除: MyBatis-Plus 提供了乐观锁和逻辑删除的功能,开发者可以通过简单的配置,在实体类中实现乐观锁和逻辑删除的功能,提高数据安全性和稳定性。

总的来说,MyBatis-Plus 是一个功能丰富、易用的 MyBatis 增强工具包,可以帮助开发者更加便捷地进行数据库操作和开发工作。

1、引用Maven依赖

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.5.5</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.github.pagehelper</groupId>
  8. <artifactId>pagehelper-spring-boot-starter</artifactId>
  9. <version>2.1.0</version>
  10. </dependency>

2、YAML配置

  1. spring:
  2. application:
  3. name: test-service
  4. datasource:
  5. driver-class-name: org.postgresql.Driver
  6. url: jdbc:postgresql://127.0.0.1:31789/test-dev?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=true
  7. username: test
  8. password: 123
  9. druid:
  10. # 连接池 初始连接数量
  11. initial-size: 10
  12. # 连接池 最大连接数量
  13. max-active: 200
  14. # 获取连接时最大等待时间,60秒。
  15. max-wait: 60000
  16. # Destory线程中如果检测到当前连接闲置时间大于 5分钟,则关闭当前连接。
  17. min-evictable-idle-time-millis: 300000
  18. # 最小连接数量
  19. min-idle: 10
  20. #时区转换
  21. jackson:
  22. time-zone: GMT+8
  23. date-format: yyyy-MM-dd HH:mm:ss
  24. #mybatis配置
  25. mybatis-plus:
  26. global-config:
  27. db-config:
  28. logic-delete-field: isDelete # 全局逻辑删除的实体字段名
  29. logic-delete-value: true # 逻辑已删除值
  30. logic-not-delete-value: false # 逻辑未删除值
  31. configuration:
  32. map-underscore-to-camel-case: true #下划线命名转换为驼峰命名
  33. auto-mapping-behavior: full #自动映射所有字段
  34. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #日志输出
  35. mapper-locations: classpath*:mappers/**/*Mapper.xml #指定 Mapper XML 文件位置

3、entity实体类

  1. /**
  2. * @author Lucas
  3. * date 2024/4/8 11:40
  4. * description 测试表
  5. */
  6. @Data
  7. @NoArgsConstructor
  8. @AllArgsConstructor
  9. @TableName("sys_test")
  10. public class SysTest {
  11. /**
  12. * ID
  13. */
  14. @TableId
  15. private Integer id;
  16. /**
  17. * 标题
  18. */
  19. private String title;
  20. /**
  21. * 内容
  22. */
  23. private String content;
  24. /**
  25. * 创建时间
  26. */
  27. private Date createTime;
  28. /**
  29. * 逻辑删除(false:未删除、true:删除)
  30. */
  31. private Boolean isDelete;
  32. }

3、分页DTO

  1. /**
  2. * @author Lucas
  3. * date 2024/4/1 19:02
  4. * description 分页DTO
  5. */
  6. @Data
  7. public class PageDto {
  8. /**
  9. * 页码
  10. */
  11. @NotNull(message = "page不允许为空")
  12. private Integer page;
  13. /**
  14. * 条数
  15. */
  16. @NotNull(message = "size不允许为空")
  17. private Integer size;
  18. }

4、测试Service

  1. /**
  2. * @author Lucas
  3. * date 2024/4/8 11:49
  4. * description 测试Service
  5. */
  6. public interface TestService extends IService<SysTest> {
  7. /**
  8. * 测试分页
  9. * @param testPageDto
  10. * @return
  11. */
  12. CommonPage<TestVo> testListPage(TestPageDto testPageDto);
  13. }

5、测试ServiceImpl

  1. /**
  2. * @author Lucas
  3. * date 2024/4/8 11:50
  4. * description 测试ServiceImpl
  5. */
  6. @Service
  7. public class TestServiceImpl extends ServiceImpl<SysTestMapper, SysTest> implements TestService {
  8. @Override
  9. public CommonPage<TestVo> testListPage(TestPageDto dto) {
  10. PageHelper.startPage(dto.getPage(), dto.getSize());
  11. LambdaQueryWrapper<SysTest> queryWrapper = new LambdaQueryWrapper<>();
  12. queryWrapper.eq(SysTest::getIsDelete, Boolean.FALSE);
  13. queryWrapper.eq(StrUtil.isNotBlank(dto.getName()), SysTest::getName, dto.getName());
  14. List<SysTest> sysTests = this.list(queryWrapper);
  15. return new CommonPage<>().restPage(sysTests, TestVo.class);
  16. }
  17. }

6、测试Mapper

  1. /**
  2. * @author Lucas
  3. * date 2024/4/8 11:46
  4. * description 测试Mapper
  5. */
  6. @Mapper
  7. public interface SysTestMapper extends BaseMapper<SysTest> {
  8. /**
  9. * 测试接口
  10. * @param dto
  11. * @param userId
  12. * @return
  13. */
  14. List<TestVo> testList(@Param("dto") TestDto dto, @Param("userId") String userId);
  15. }

7、resources/mappers目录文件下SysTestMapper.xml(自定义SQL操作)

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.test.service.mapper.SysTestMapper">
  4. <select id="testList" resultType="com.test.service.model.vo.TestVo">
  5. select
  6. id,
  7. name,
  8. create_time
  9. from sys_test
  10. where user_id = #{userId}
  11. <if test="dto.name != null and dto.name != '' ">
  12. AND name = #{dto.name}
  13. </if>
  14. <if test="dto.startTime != null">
  15. AND create_time &gt;= #{dto.startTime}
  16. </if>
  17. <if test="dto.endTime != null">
  18. AND create_time &lt;= #{dto.endTime}
  19. </if>
  20. </select>
  21. </mapper>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/392922
推荐阅读
相关标签
  

闽ICP备14008679号