1. MyBatis Plus核心价值解析
第一次接触MyBatis Plus是在2018年一个电商后台重构项目中,当时团队还在用原生MyBatis手写所有CRUD。当我看到同事只用三行代码就实现了分页查询时,那种震撼感至今难忘。作为MyBatis的增强工具,MyBatis Plus的核心价值在于让开发者从重复的SQL编写中解放出来,同时保留了MyBatis的灵活性。
这个框架最吸引我的特点是它的"约定优于配置"理念。比如实体类字段默认采用驼峰转下划线的方式映射数据库字段,这省去了大量@Column注解。对于单表操作,几乎可以完全不写SQL就能实现完整的数据操作。但不同于JPA的完全抽象,MyBatis Plus允许你在需要时随时介入SQL编写,这种平衡感正是它能在国内Java开发者中流行开来的关键。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境搭建与配置
2.1 项目初始化配置
在Spring Boot项目中引入MyBatis Plus只需要一个starter依赖:
xml复制<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
注意:不要同时引入mybatis和mybatis-plus的依赖,这会导致类冲突。MyBatis Plus已经包含了MyBatis核心。
配置文件中需要至少指定数据源和Mapper扫描路径:
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/demo
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志
2.2 实体类与Mapper基础用法
定义实体类时,常用的注解有:
- @TableName:指定表名
- @TableId:标识主键
- @TableField:字段映射
java复制@TableName("sys_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("username") // 可省略,默认驼峰转下划线
private String name;
private Integer age;
// getter/setter省略
}
对应的Mapper接口只需要继承BaseMapper:
java复制public interface UserMapper extends BaseMapper<User> {
// 已经自带基础CRUD方法
}
3. 核心功能深度解析
3.1 条件构造器实战技巧
QueryWrapper和LambdaQueryWrapper是最常用的查询构造器。我强烈推荐使用Lambda形式,因
