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>

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

二、CRUD操作

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

1. 定义实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

2. 创建Mapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

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());
    }
}

三、条件构造器

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

1. 使用 QueryWrapper

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John").ge("age", 18);
List<User> users = userMapper.selectList(queryWrapper);

2. 使用 UpdateWrapper

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "John").set("age", 26);
userMapper.update(null, updateWrapper);

四、分页插件

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

1. 配置分页插件

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

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2. 使用分页查询

IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<>());

五、逻辑删除

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;
}

2. 配置逻辑删除插件

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

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

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

六、自动填充

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

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;
}

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);
    }
}

七、总结

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

思维导图

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

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

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 07 月 27 日
如果觉得我的文章对你有用,请随意赞赏