MyBatis-Plus 入门:从零开始掌握高效数据库操作利器

一、MyBatis-Plus 简介
MyBatis-Plus 是一款优秀的持久层框架,它是对 MyBatis 的增强,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 集成了诸多实用功能,如代码生成、自动填充、乐观锁、动态表名等,大大降低了数据库操作的开发成本。
二、MyBatis-Plus 入门步骤
1. 环境搭建
(1)创建一个 Spring Boot 项目,引入 MyBatis-Plus 依赖。
(2)在 pom.xml 文件中添加以下依赖:
```xml
```
(3)在 application.properties 或 application.yml 文件中配置数据库信息:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
2. 创建实体类
根据数据库表结构,创建对应的实体类,并使用 `@TableName` 注解指定表名:
```java
@Table(name = "user")
public class User {
@Id
private Long id;
private String name;
private Integer age;
// ... 其他属性和 getter/setter 方法
}
```
3. 创建 Mapper 接口
创建一个继承 `BaseMapper` 的接口,该接口包含了 MyBatis-Plus 提供的基本操作方法:
```java
public interface UserMapper extends BaseMapper
}
```
4. 使用 MyBatis-Plus 进行数据库操作
(1)插入数据
```java
User user = new User();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
```
(2)查询数据
```java
User user = userMapper.selectById(1L);
System.out.println(user.getName());
```
(3)更新数据
```java
User user = userMapper.selectById(1L);
user.setName("李四");
userMapper.updateById(user);
```
(4)删除数据
```java
userMapper.deleteById(1L);
```
5. 代码生成器
MyBatis-Plus 提供了代码生成器,可以快速生成实体类、Mapper 接口、Mapper XML 等文件。使用代码生成器,只需配置数据库信息、表名、实体类名称等参数,即可一键生成所需代码。
(1)添加代码生成器依赖
```xml
```
(2)配置代码生成器
```java
public class CodeGenerator {
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
// 全局配置
mpg.setGlobalConfig(new GlobalConfig().outputDir(System.getProperty("user.dir") + "/src/main/java")
.author("作者名称")
.fileOverride()
.disableOpenDir()
.commentDate("yyyy-MM-dd HH:mm:ss"));
// 数据源配置
mpg.setDataSource(new DataSourceConfig().url("jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC")
.driverName("com.mysql.cj.jdbc.Driver").username("root").password("root"));
// 包配置
mpg.setPackageInfo(new PackageConfig().parent("com.example.demo").entity("entity").mapper("mapper").xml("mapper"));
// 策略配置
mpg.setStrategy(new Strategy().addInclude("user") // 设置需要生成的表名
.entityLombokModel() // 使用 Lombok
.enableActiveRecord() // 使用乐观锁
.controllerMappingHyphenStyle() // 实体类命名方式为驼峰转下划线
.controllerName("%sController")
.mapperName("%sMapper")
.xmlName("%sMapper"));
mpg.execute();
}
}
```
执行 `CodeGenerator` 类,即可生成所需代码。
三、MyBatis-Plus 高级功能
1. 乐观锁
MyBatis-Plus 支持乐观锁,通过在实体类中添加 `@Version` 注解,即可实现乐观锁功能。
```java
@Version
private Integer version;
```
2. 动态表名
MyBatis-Plus 支持动态表名,通过在 Mapper 接口中添加 `@TableName` 注解,并传入动态表名,即可实现动态表名功能。
```java
@TableName("user")
public interface UserMapper extends BaseMapper
}
```
3. 代码生成器自定义模板
MyBatis-Plus 代码生成器支持自定义模板,可以自定义实体类、Mapper 接口、Mapper XML 等文件的生成内容。
4. 分页插件
MyBatis-Plus 集成了分页插件,通过添加分页插件依赖,即可实现分页功能。
```xml
```
```java
Page
page = userMapper.selectPage(page, Wrappers.query().like("name", "张三"));
```
四、总结
MyBatis-Plus 是一款功能强大的持久层框架,它简化了数据库操作的开发过程,提高了开发效率。通过本文的介绍,相信你已经对 MyBatis-Plus 有了一定的了解。在实际开发中,可以根据项目需求,灵活运用 MyBatis-Plus 的各项功能,为项目带来更多便利。






