MyBatis-Plus 是在 MyBatis 基础上扩展的高效 ORM 框架,它简化了 MyBatis 的配置和操作,提供了对常见操作(如增、删、改、查)的封装,使得开发者可以快速实现数据访问层的操作,提升开发效率。
本文将介绍 MyBatis-Plus 的基本概述、安装与配置、以及如何在 Spring Boot 中进行整合。
1. MyBatis-Plus 概述
MyBatis-Plus 是 MyBatis 的增强工具,它在 MyBatis 的基础上提供了以下几个特点:
1.1 MyBatis-Plus 的核心特点
- 无缝集成 MyBatis:MyBatis-Plus 可以无缝地与 MyBatis 集成,兼容 MyBatis 的所有特性和功能。
- 简化 CRUD 操作:MyBatis-Plus 提供了内置的通用 Mapper 和 Service,减少了手写 SQL 的工作量。
- 代码生成器:MyBatis-Plus 提供了代码生成器功能,可以根据数据库表自动生成实体类、Mapper 和 Service 等代码。
- 分页插件:MyBatis-Plus 内置分页插件,支持自动分页功能,简化了分页查询的实现。
- 条件构造器:提供了丰富的条件构造器,可以简洁地构造复杂的 SQL 查询条件。
1.2 常见功能
- 通用 CRUD 操作:自动实现常见的增、删、改、查操作。
- 分页查询:内置分页插件,支持分页查询操作。
- Lambda 表达式:支持通过 Lambda 表达式构造查询条件,避免了拼接 SQL 字符串。
- 自动代码生成:自动生成实体类、Mapper 接口、Service 层代码,减少重复劳动。
2. 安装与配置
2.1 Maven 依赖
要使用 MyBatis-Plus,首先需要将相关的 Maven 依赖添加到项目中。以下是将 MyBatis-Plus 集成到 Spring Boot 项目的 Maven 配置。
1. 添加 MyBatis-Plus 和 MyBatis 相关依赖
<dependencies>
<!-- MyBatis-Plus 核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.4.3</version>
</dependency>
<!-- MyBatis 支持 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- MyBatis-Plus 分页插件依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.3</version>
</dependency>
<!-- Spring Boot Starter JDBC(数据库连接)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
2. 配置 MyBatis-Plus 扫描 Mapper 接口
在 application.properties
或 application.yml
中配置 MyBatis-Plus 的相关设置。
# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath:/mappers/**/*.xml
mybatis-plus.type-aliases-package=com.example.domain
- mapper-locations:指定 Mapper XML 文件的路径。
- type-aliases-package:指定实体类所在包路径。
2.2 Spring Boot 整合 MyBatis-Plus
在 Spring Boot 项目中,MyBatis-Plus 可以通过自动配置与 Spring Boot 整合,免去大量配置。只需要在主类或配置类中启用 MyBatis 扫描即可。
@SpringBootApplication
@MapperScan("com.example.mapper") // 扫描 Mapper 接口
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@MapperScan
注解用于扫描 Mapper 接口,使得 MyBatis-Plus 能够自动识别和注册这些接口。
3. 初始配置与入门示例
3.1 创建实体类
首先,创建一个实体类,它将映射到数据库表。假设有一个名为 user
的表。
@Data // Lombok 注解,自动生成 Getter、Setter 等方法
@TableName("user") // 映射到数据库中的表
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
@TableName
注解用于指定该类对应的数据库表名。@Data
注解来自 Lombok,用于自动生成实体类的getter
、setter
和toString
方法。
3.2 创建 Mapper 接口
创建一个 Mapper 接口,继承 MyBatis-Plus 提供的 BaseMapper 接口,这样可以直接使用 MyBatis-Plus 提供的通用 CRUD 方法。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
// 这里可以添加自定义的方法
}
BaseMapper
提供了对常见 CRUD 操作的支持,如 insert
、update
、delete
和 select
。
3.3 创建 Service 层
创建一个 Service 层来处理业务逻辑,并注入 UserMapper
。
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
// 可以在这里添加自定义的方法
}
ServiceImpl
是 MyBatis-Plus 提供的基础服务类,提供了常用的业务方法,如 save
、remove
、updateById
等。
3.4 创建 Controller 层
创建一个 Controller 层,用于暴露 API。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public List<User> getAllUsers() {
return userService.list(); // 获取所有用户
}
@PostMapping("/")
public boolean addUser(@RequestBody User user) {
return userService.save(user); // 添加用户
}
@PutMapping("/")
public boolean updateUser(@RequestBody User user) {
return userService.updateById(user); // 更新用户
}
@DeleteMapping("/{id}")
public boolean deleteUser(@PathVariable Long id) {
return userService.removeById(id); // 删除用户
}
}
这个简单的 UserController
提供了基本的 CRUD 操作接口,使用 UserService
来调用 MyBatis-Plus 提供的服务。
3.5 启动应用并测试
启动 Spring Boot 应用后,访问接口进行测试:
- GET /users/:获取所有用户。
- POST /users/:创建新用户。
- PUT /users/:更新用户信息。
- DELETE /users/{id}:删除用户。
你可以使用 Postman 或其他 API 工具进行测试。
4. MyBatis-Plus 高级功能
4.1 分页查询
MyBatis-Plus 提供了内置的分页插件,可以轻松地实现分页查询。
启用分页插件
首先,在 application.properties
或 application.yml
中配置分页插件:
# 启用分页插件
mybatis-plus.configuration.page-size=10
在代码中使用分页
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public List<User> getUserList() {
Page<User> page = new Page<>(1, 10); // 页码和每页大小
return userMapper.selectPage(page, null).getRecords();
}
selectPage
方法会自动返回分页结果。
4.2 条件构造器
MyBatis-Plus 提供了 条件构造器,可以简化 SQL 查询条件的构建。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 18); // 查询年龄为 18 的用户
List<User> users = userMapper.selectList(queryWrapper);
你可以通过 eq
、lt
、gt
等方法构造不同的查询条件,MyBatis-Plus 会自动将其转换为 SQL。
4.3 自定义 SQL 查询
尽管 MyBatis-Plus 提供了很多通用的 CRUD 方法,但有时你可能需要编写自定义的 SQL 查询。
@Select("SELECT * FROM user WHERE age > #{age}")
List<User> selectUsersByAge(int age);
你可以直接在 Mapper 接口中使用 @Select
、@Update
、@Insert
等注解来编写自定义 SQL 查询。
5. 总结
- MyBatis-Plus 是对 MyBatis 的增强,使得数据访问层的开发更加简单、高效。它提供了 自动化 CRUD 操作、分页插件、条件构造器、代码生成器 等功能。
- 通过 Spring Boot 整合 MyBatis-Plus,开发者可以更轻松地在 Spring Boot 应用中使用 MyBatis-Plus 提供的强大功能。
- 使用 MyBatis-Plus,你可以通过简单的配置和代码,实现数据访问层的高效开发,减少了大量的模板代码和重复工作。
MyBatis-Plus 的出现大大简化了数据库操作,提升了开发效率,尤其适用于需要大量 SQL 操作的企业级应用开发。 🚀