赞
踩
MyBatis-Plus 是 MyBatis 的一个增强工具包,它在原有的 MyBatis 框架之上提供了更多便捷的功能和增强,有助于简化开发流程、提高开发效率。以下是 MyBatis-Plus 的一些主要特点和功能:
CRUD 操作增强: MyBatis-Plus 提供了一套强大的 CRUD 方法,可以帮助开发者快速完成常见的数据库操作,无需编写繁琐的 SQL 语句,从而简化了数据访问的操作。
条件构造器: MyBatis-Plus 提供了灵活的条件构造器,可以方便地动态拼接 SQL 条件,支持链式调用,使得条件构造更加简单和灵活。
代码生成器: MyBatis-Plus 提供了代码生成器工具,能够根据数据库表结构自动生成 Entity、Mapper、Service、Controller 等代码,大大减少了开发者的工作量。
性能优化: MyBatis-Plus 对 MyBatis 进行了一系列的性能优化,提升了查询的效率和性能,使得系统更加稳定和高效。
自动填充: MyBatis-Plus 支持实体类字段的自动填充功能,可以在插入或更新数据时自动填充指定的字段,例如创建时间、更新时间等。
乐观锁和逻辑删除: MyBatis-Plus 提供了乐观锁和逻辑删除的功能,开发者可以通过简单的配置,在实体类中实现乐观锁和逻辑删除的功能,提高数据安全性和稳定性。
总的来说,MyBatis-Plus 是一个功能丰富、易用的 MyBatis 增强工具包,可以帮助开发者更加便捷地进行数据库操作和开发工作。
1、引用Maven依赖
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.5.5</version>
- </dependency>
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>2.1.0</version>
- </dependency>
2、YAML配置
- spring:
- application:
- name: test-service
- datasource:
- driver-class-name: org.postgresql.Driver
- url: jdbc:postgresql://127.0.0.1:31789/test-dev?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=true
- username: test
- password: 123
- druid:
- # 连接池 初始连接数量
- initial-size: 10
- # 连接池 最大连接数量
- max-active: 200
- # 获取连接时最大等待时间,60秒。
- max-wait: 60000
- # Destory线程中如果检测到当前连接闲置时间大于 5分钟,则关闭当前连接。
- min-evictable-idle-time-millis: 300000
- # 最小连接数量
- min-idle: 10
- #时区转换
- jackson:
- time-zone: GMT+8
- date-format: yyyy-MM-dd HH:mm:ss
- #mybatis配置
- mybatis-plus:
- global-config:
- db-config:
- logic-delete-field: isDelete # 全局逻辑删除的实体字段名
- logic-delete-value: true # 逻辑已删除值
- logic-not-delete-value: false # 逻辑未删除值
- configuration:
- map-underscore-to-camel-case: true #下划线命名转换为驼峰命名
- auto-mapping-behavior: full #自动映射所有字段
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #日志输出
- mapper-locations: classpath*:mappers/**/*Mapper.xml #指定 Mapper XML 文件位置
3、entity实体类
- /**
- * @author Lucas
- * date 2024/4/8 11:40
- * description 测试表
- */
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @TableName("sys_test")
- public class SysTest {
- /**
- * ID
- */
- @TableId
- private Integer id;
-
- /**
- * 标题
- */
- private String title;
-
- /**
- * 内容
- */
- private String content;
-
- /**
- * 创建时间
- */
- private Date createTime;
-
- /**
- * 逻辑删除(false:未删除、true:删除)
- */
- private Boolean isDelete;
- }
3、分页DTO
- /**
- * @author Lucas
- * date 2024/4/1 19:02
- * description 分页DTO
- */
- @Data
- public class PageDto {
-
- /**
- * 页码
- */
- @NotNull(message = "page不允许为空")
- private Integer page;
-
- /**
- * 条数
- */
- @NotNull(message = "size不允许为空")
- private Integer size;
- }
4、测试Service
- /**
- * @author Lucas
- * date 2024/4/8 11:49
- * description 测试Service
- */
- public interface TestService extends IService<SysTest> {
-
- /**
- * 测试分页
- * @param testPageDto
- * @return
- */
- CommonPage<TestVo> testListPage(TestPageDto testPageDto);
- }
5、测试ServiceImpl
- /**
- * @author Lucas
- * date 2024/4/8 11:50
- * description 测试ServiceImpl
- */
- @Service
- public class TestServiceImpl extends ServiceImpl<SysTestMapper, SysTest> implements TestService {
-
- @Override
- public CommonPage<TestVo> testListPage(TestPageDto dto) {
- PageHelper.startPage(dto.getPage(), dto.getSize());
- LambdaQueryWrapper<SysTest> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysTest::getIsDelete, Boolean.FALSE);
- queryWrapper.eq(StrUtil.isNotBlank(dto.getName()), SysTest::getName, dto.getName());
- List<SysTest> sysTests = this.list(queryWrapper);
- return new CommonPage<>().restPage(sysTests, TestVo.class);
- }
- }
6、测试Mapper
- /**
- * @author Lucas
- * date 2024/4/8 11:46
- * description 测试Mapper
- */
- @Mapper
- public interface SysTestMapper extends BaseMapper<SysTest> {
-
- /**
- * 测试接口
- * @param dto
- * @param userId
- * @return
- */
- List<TestVo> testList(@Param("dto") TestDto dto, @Param("userId") String userId);
-
- }
7、resources/mappers目录文件下SysTestMapper.xml(自定义SQL操作)
- <?xml version="1.0" encoding="utf-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mapper namespace="com.test.service.mapper.SysTestMapper">
-
- <select id="testList" resultType="com.test.service.model.vo.TestVo">
- select
- id,
- name,
- create_time
- from sys_test
- where user_id = #{userId}
- <if test="dto.name != null and dto.name != '' ">
- AND name = #{dto.name}
- </if>
- <if test="dto.startTime != null">
- AND create_time >= #{dto.startTime}
- </if>
- <if test="dto.endTime != null">
- AND create_time <= #{dto.endTime}
- </if>
- </select>
-
- </mapper>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。