一、MyBatis-Plus是什么?
官方解释:MyBatis的增强工具(像给自行车加装电动马达)
小白理解:一个能让你少写SQL的神器,80%的数据库操作不用手写代码!
二、为什么选择它?(超直白版)
场景 | 原生MyBatis | MyBatis-Plus |
---|---|---|
新增用户 | 写INSERT SQL → 写Mapper → 测试 | userMapper.insert(user) |
分页查询 | 手写PageHelper代码 | userMapper.selectPage(page) |
开发速度 | ⏳ | ⚡ |
三、超简单入门四步走
步骤1:添加依赖(pom.xml)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
步骤2:创建实体类
@Data // Lombok注解,自动生成getter/setter
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
步骤3:创建Mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 继承后自动拥有CRUD方法
}
步骤4:直接使用!
@Autowired
private UserMapper userMapper;
// 插入数据
User user = new User();
user.setName("小明");
userMapper.insert(user); // 无需SQL!
四、常用注解大全
1. @TableName("表名")
-
@TableName("sys_user") // 实际表名和类名不同时使用 public class User { ... }
2. @TableId
(主键注解)
@TableId(type = IdType.AUTO) // 自增主键
private Long id;
3. @TableField("字段名")
@TableField("user_age") // 解决字段名不一致
private Integer age;
五、BaseMapper的魔法
继承BaseMapper<T>
后自动获得的方法:
方法名 | 作用 | 示例 |
---|---|---|
selectById(id) | 按主键查询 | userMapper.selectById(1) |
insert(entity) | 插入数据 | userMapper.insert(user) |
updateById(entity) | 根据ID更新 | userMapper.updateById(user) |
selectList(query) | 条件查询 | mapper.selectList(new QueryWrapper().eq("age",18)) |
六、Wrapper条件构造器(核心!)
示例1:查询年龄>18的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 18); // gt = greater than
List<User> users = userMapper.selectList(wrapper);
示例2:修改名字包含"张"的用户
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.like("name", "张");
userMapper.update(new User().setEmail("xxx@qq.com"), wrapper);
七、代码生成器(解放双手)
- 添加插件依赖
- 运行生成器代码 → 自动生成Entity/Mapper/Service
FastAutoGenerator.create("jdbc:mysql://localhost:3306/test", "root", "123456")
.globalConfig(builder -> builder.outputDir("src/main/java"))
.packageConfig(builder -> builder.parent("com.example"))
.execute();
八、避坑指南
-
启动类加扫描注解:
@MapperScan("com.example.mapper")
-
字段驼峰转下划线
配置文件中开启:mybatis-plus: configuration: map-underscore-to-camel-case: true
-
**SQL不生效?**
查看日志:logging.level.com.example.mapper=debug
九、学习路线建议
- 先掌握基本CRUD
- 练习条件构造器(Wrapper)
- 尝试分页查询(需配置分页插件)
- 玩转代码生成器
- 进阶功能:乐观锁、自动填充、多数据源
十、总结一句话
MyBatis-Plus ≈ 简单CRUD不用写SQL + 复杂查询用Wrapper + 代码生成省时间