MyBatis-Plus 完全指南:CRUD 不用写 SQL

全面介绍 MyBatis-Plus 的核心功能,包括 CRUD 操作、条件构造器、分页查询、代码生成等。

Java 后端 2026-06-15 12 分钟

MyBatis-Plus 完全指南:CRUD 不用写 SQL

MyBatis-Plus 是 MyBatis 的增强工具,简化了 CRUD 操作。

快速开始

添加依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
</dependency>

实体类

@Data
@TableName("users")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

Mapper

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

CRUD 操作

// 新增
userMapper.insert(user);

// 删除
userMapper.deleteById(1L);
userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));

// 修改
userMapper.updateById(user);

// 查询
User user = userMapper.selectById(1L);
List<User> users = userMapper.selectList(null);

条件构造器

// QueryWrapper
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 25)
       .like("name", "张")
       .orderByDesc("create_time");
List<User> users = userMapper.selectList(wrapper);

// LambdaQueryWrapper(推荐)
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 25)
       .like(User::getName, "张")
       .orderByDesc(User::getCreateTime);
List<User> users = userMapper.selectList(wrapper);

分页查询

// 配置分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
    return interceptor;
}

// 使用
Page<User> page = new Page<>(1, 10);
Page<User> result = userMapper.selectPage(page, wrapper);

代码生成器

AutoGenerator generator = new AutoGenerator();
generator.setDataSource(new DataSourceConfig()
    .setUrl("jdbc:mysql://localhost:3306/demo")
    .setUsername("root")
    .setPassword("password"));
generator.setPackageInfo(new PackageConfig()
    .setParent("com.example"));
generator.execute();

最佳实践

  1. 使用 LambdaQueryWrapper:类型安全,避免字段名错误
  2. 分页查询:大数据量必须分页
  3. 逻辑删除:使用 @TableLogic 实现软删除
  4. 自动填充:使用 @TableField(fill) 自动填充创建时间等

总结

MyBatis-Plus 简化了 MyBatis 的 CRUD 操作。通过条件构造器和分页插件,可以高效地进行数据库操作。

📚 相关文章