SpringBoot 集成 MyBatis-Plus 的使用指南
环境准备
确保开发环境已安装 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.yml
或 application.properties
中配置数据库连接信息:
spring:datasource:url: jdbc:mysql://localhost:3306/test_db?useSSL=falseusername: rootpassword: 123456driver-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);}
}
条件构造器
使用 QueryWrapper
或 LambdaQueryWrapper
构建复杂查询:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "Tom").gt("age", 18);
List<User> users = userMapper.selectList(wrapper);
分页查询
配置分页插件后,调用分页方法:
@Configuration
public class MyBatisPlusConfig {@Beanpublic 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: deletedlogic-delete-value: 1logic-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.AUTO
、IdType.UUID
)。 - 复杂 SQL 仍可通过 XML 或注解方式实现。