环境准备

确保开发环境已安装 JDK 1.8+、Maven 3.0+ 或 Gradle,并创建一个 SpringBoot 项目。在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

配置数据源

application.ymlapplication.properties 中配置数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test_db?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

实体类映射

创建实体类并使用 MyBatis-Plus 注解与数据库表映射:

@Data
@TableName("user") // 指定表名
public class User {
    @TableId(type = IdType.AUTO) // 主键自增
    private Long id;
    private String name;
    private Integer age;
    @TableField("email") // 字段名映射
    private String email;
}

Mapper 接口

继承 BaseMapper 接口,无需编写 XML 文件即可获得基础 CRUD 方法:

public interface UserMapper extends BaseMapper<User> {
    // 可自定义扩展方法
}

服务层调用

通过 Service 层调用 Mapper 方法:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    // 示例:查询所有用户
    public List<User> listUsers() {
        return baseMapper.selectList(null);
    }
}

条件构造器

使用 QueryWrapperLambdaQueryWrapper 构建复杂查询:

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "Tom").gt("age", 18);
List<User> users = userMapper.selectList(wrapper);

分页查询

配置分页插件后,调用分页方法:

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

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

自动填充

通过 @TableField 实现字段自动填充(如创建时间、更新时间):

@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;

逻辑删除

配置逻辑删除字段(需在表中添加 deleted 字段):

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

代码生成器

使用 MyBatis-Plus 的代码生成器快速生成模板代码:

FastAutoGenerator.create("jdbc:mysql://localhost:3306/test_db", "root", "123456")
    .globalConfig(builder -> builder.outputDir("src/main/java"))
    .packageConfig(builder -> builder.parent("com.example"))
    .strategyConfig(builder -> builder.addInclude("user"))
    .execute();

注意事项
  • 实体类需添加 @Data 注解(Lombok)或手动生成 getter/setter。
  • 主键策略需根据实际需求选择(如 IdType.AUTOIdType.UUID)。
  • 复杂 SQL 仍可通过 XML 或注解方式实现。

更多推荐