MyBatis-Plus关键功能使用

简介: 通过本文的详细介绍,您可以系统地了解并掌握MyBatis-Plus的关键功能,进一步提高开发效率和代码质量。

MyBatis-Plus关键功能使用指南

MyBatis-Plus是一款基于MyBatis的增强工具,旨在简化开发过程,提高工作效率。本文将详细介绍MyBatis-Plus的关键功能,包括CRUD操作、条件构造器、分页插件、逻辑删除和自动填充等。

一、环境准备

在使用MyBatis-Plus之前,确保已配置好基本的Spring Boot项目,并集成了MyBatis-Plus。

1. 添加依赖

pom.xml中添加MyBatis-Plus依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.4</version>
</dependency>
AI 代码解读

2. 配置数据源

application.properties中配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
AI 代码解读

二、CRUD操作

MyBatis-Plus提供了简单易用的CRUD操作。

1. 定义实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
​
AI 代码解读

2. 创建Mapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
}
​
AI 代码解读

3. 使用Mapper进行CRUD操作

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public void crudOperations() {
        // 插入数据
        User user = new User(null, "John", 25, "john@example.com");
        userMapper.insert(user);

        // 查询数据
        User userFromDB = userMapper.selectById(user.getId());

        // 更新数据
        userFromDB.setEmail("john.doe@example.com");
        userMapper.updateById(userFromDB);

        // 删除数据
        userMapper.deleteById(userFromDB.getId());
    }
}
​
AI 代码解读

三、条件构造器

MyBatis-Plus提供了丰富的条件构造器,方便进行复杂查询。

1. 使用 QueryWrapper

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John").ge("age", 18);
List<User> users = userMapper.selectList(queryWrapper);
​
AI 代码解读

2. 使用 UpdateWrapper

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "John").set("age", 26);
userMapper.update(null, updateWrapper);
​
AI 代码解读

四、分页插件

分页是Web应用中常见的需求,MyBatis-Plus提供了简单的分页插件。

1. 配置分页插件

在配置类中添加分页插件:

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
​
AI 代码解读

2. 使用分页查询

IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<>());
​
AI 代码解读

五、逻辑删除

MyBatis-Plus支持逻辑删除,即不物理删除记录,而是标记为删除状态。

1. 配置逻辑删除

在实体类中添加逻辑删除字段:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    @TableLogic
    private Integer deleted;
}
​
AI 代码解读

2. 配置逻辑删除插件

在配置类中添加逻辑删除插件:

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
​
AI 代码解读

六、自动填充

自动填充功能用于在插入或更新记录时自动填充某些字段,例如创建时间和更新时间。

1. 配置自动填充

在实体类中配置自动填充字段:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
​
AI 代码解读

2. 定义自动填充处理器

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }
}
​
AI 代码解读

七、总结

MyBatis-Plus通过简化CRUD操作、提供丰富的条件构造器、支持分页、逻辑删除和自动填充等功能,提高了开发效率,减少了重复代码。通过本文的介绍,您可以掌握MyBatis-Plus的关键功能,并将其应用于实际项目中。

思维导图

- MyBatis-Plus关键功能使用
  - 环境准备
    - 添加依赖
    - 配置数据源
  - CRUD操作
    - 定义实体类
    - 创建Mapper接口
    - 使用Mapper进行CRUD操作
  - 条件构造器
    - 使用QueryWrapper
    - 使用UpdateWrapper
  - 分页插件
    - 配置分页插件
    - 使用分页查询
  - 逻辑删除
    - 配置逻辑删除
    - 配置逻辑删除插件
  - 自动填充
    - 配置自动填充
    - 定义自动填充处理器
  - 总结
​
AI 代码解读

通过本文的详细介绍,您可以系统地了解并掌握MyBatis-Plus的关键功能,进一步提高开发效率和代码质量。

目录
相关文章
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
611 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
该博客文章介绍了一个使用Mybatis、Layui、MVC和JSP技术栈开发的服装库存管理系统,包括注册登录、权限管理、用户和货号管理、库存管理等功能,并提供了源码下载链接。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
505 0
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
99 2
留言板——增添功能(持久化存储数据,使用MyBatis)
留言板——增添功能(持久化存储数据,使用MyBatis)
98 4
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用
87 2
MyBatis插件深度解析:功能、原理、使用、应用场景与最佳实践
MyBatis插件深度解析:功能、原理、使用、应用场景与最佳实践