1. MyBatis Plus 核心价值与定位
作为 MyBatis 的增强工具,MyBatis Plus 在保留原生 MyBatis 所有特性的基础上,针对单表 CRUD 操作进行了深度封装。我在实际项目中最直观的感受是:它让 DAO 层代码量减少了 70% 以上,同时通过智能化的 SQL 自动生成,避免了 90% 的手写 SQL 错误。不同于其他 ORM 框架的"全自动"理念,MyBatis Plus 采用了"半自动化"设计哲学——既提供便捷的 CRUD 封装,又保留 MyBatis 原生 SQL 的灵活性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境搭建实战
2.1 依赖配置要点
以 Spring Boot 项目为例,最新稳定版依赖配置如下:
xml复制<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
这里有个容易踩的坑:如果项目中同时存在 MyBatis 原生依赖,必须确保版本号一致。我曾遇到过因为 mybatis-spring 版本冲突导致的"Invalid bound statement"异常,解决方案是显式声明统一版本:
xml复制<properties>
<mybatis.version>3.5.13</mybatis.version>
</properties>
2.2 配置类关键项
java复制@Configuration
@MapperScan("com.xxx.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 乐观锁插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> {
// 关闭MP自带的逻辑删除字段自动填充
configuration.setLogicDeleteField("del_flag");
};
}
}
3. 核心功能深度解析
3.1 实体类注解体系
java复制@Data
@TableName(value = "sys_user", autoResultMap = true)
public class User {
@TableId(type = IdType.AUTO)
private Long id;
