MyBatis-Plus 配置与使用指南
一、添加 Maven 依赖
在 pom.xml 中引入 MyBatis-Plus starter 依赖,排除冲突的 MyBatis 相关组件:
<!-- MyBatis-Plus 核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
<exclusions>
<!-- 排除与 Spring 整合的旧版本 MyBatis 依赖 -->
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
二、配置文件设置(application.yml)
配置数据源信息及 MyBatis-Plus 全局参数:
spring:
# 数据源配置(MySQL 示例)
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_test_v5?serverTimezone=GMT%2B8&useSSL=true
username: root
password: 123456
# MyBatis-Plus 全局配置
mybatis-plus:
mapper-locations: classpath:mapper/*.xml # Mapper XML 文件存放路径
type-aliases-package: com.example.demo.entity # 实体类别名扫描包
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台打印 SQL 日志
global-config:
banner: false # 关闭启动时的 Banner 日志
db-config:
table-prefix: tb_ # 数据库表名前缀(实体类名会自动拼接前缀生成表名)
logic-delete-field: isDeleted # 全局逻辑删除字段名
logic-not-delete-value: 0 # 未删除状态值(默认 0)
logic-delete-value: 1 # 已删除状态值(默认 1)
三、实体类创建
使用 MyBatis-Plus 注解映射数据库表结构:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/**
* 用户实体类(对应数据库表 tb_user)
*/
@TableName("user") // 指定数据库表名(若与实体类名+前缀一致可省略)
public class User {
@TableId(type = IdType.AUTO) // 主键自增策略
private Long id;
private String name; // 姓名
private Integer age; // 年龄
}
四、创建 Mapper 接口
继承 MyBatis-Plus 提供的 BaseMapper 接口,获得基础 CRUD 能力:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.springframework.stereotype.Repository;
/**
* 用户数据访问接口
* 继承 BaseMapper 后自动拥有增删改查方法,无需手动编写 SQL
*/
@Repository // 标识为数据访问层组件,避免 IDE 报错
public interface UserMapper extends BaseMapper<User> {
// 如需自定义 SQL,可在此添加方法并在 Mapper XML 中实现
}
五、配置 Mapper 扫描
在 Spring Boot 主类中指定 Mapper 接口的扫描路径:
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper") // 扫描 Mapper 接口所在包
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
六、使用 MyBatis-Plus 进行数据库操作
在服务层注入 Mapper 并调用内置方法:
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper; // 注入 Mapper 接口
/**
* 查询所有用户(自动过滤逻辑删除数据)
*/
public List<User> getAllUsers() {
// selectList(null) 表示无查询条件,返回所有记录
return userMapper.selectList(null);
}
// 其他操作示例:
// 1. 根据 ID 查询:userMapper.selectById(1L)
// 2. 新增用户:userMapper.insert(user)
// 3. 更新用户:userMapper.updateById(user)
// 4. 删除用户(逻辑删除):userMapper.deleteById(1L)
}
核心优势说明
简化 CRUD 操作:通过继承 BaseMapper 获得内置的增删改查方法,无需编写基础 SQL。
全局配置统一管理:表前缀、逻辑删除等参数可全局配置,减少重复代码。
SQL 日志可视化:通过配置日志实现 SQL 语句打印,便于调试。
灵活扩展:支持自定义 SQL(通过 Mapper XML)和动态查询(LambdaQueryWrapper)。
通过以上步骤,可快速集成 MyBatis-Plus 并实现高效的数据库操作。