Spring Boot整合MyBatis-Plus全攻略

发布于:2025-08-01 ⋅ 阅读:(18) ⋅ 点赞:(0)


以下是Spring Boot整合MyBatis-Plus的详细步骤和配置说明:

添加依赖

pom.xml中引入核心依赖(需根据Spring Boot版本调整MyBatis-Plus版本):

<!--mybatis_plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <dependency>

配置数据源

application.yml中配置数据库连接和MyBatis-Plus基础参数:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_name?serverTimezone=GMT
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志

实体类映射

使用注解定义实体类与表的映射关系:

@TableName("student")//设置数据库表名(类名与数据库表面一致时可以省略)
public class Student {
    @TableId(type = IdType.AUTO) //自动主键回填也可配置在全局中
    private int id;
//    @TableField(value = "name")//设置数据库表字段名称(一致时可以省略)
    private String name;
//    @TableField(value = "sex")
    private int sex;
//    @TableField(value = "cardId")
    private int cardid;
    @TableLogic(value="0",delval="1")
//    @TableField(exist = false)
    @TableField(value = "isdelete")
    //value为正常数据的值,delval为删除数据的值
    private Integer deleted;
    @Version
    private int version;

Mapper接口

继承BaseMapper获得基础CRUD方法:

@Mapper
//BaseMapper是一个通用的 Mapper 接口   提供数据库操作
//Student是一个泛型参数   代表这个 Mapper 接口操作的实体类是Student类
public interface StudentMapper extends BaseMapper<Student> {

}

扫描Mapper接口

在启动类添加@MapperScan注解:

@SpringBootApplication
//该注解和接口上的@Mapper二者任选其一
@MapperScan("com.ape") // 指定Mapper接口所在包
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

分页插件配置

新增配置类启用分页功能:

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

使用示例

在测试类中直接调用MyBatis-Plus提供的方法:

@SpringBootTest
class SpringbootMybatis02ApplicationTests {

    @Autowired(required = false)//不想看到报红 可以设置未找到就不装配
//    @Autowired
//由于程序还未启动 没加载StudentMapper 报红不用管
    StudentMapper studentMapper;

    @Test
    void contextLoads() {
        //queryWrapper 从数据库中查询数据并返回一个列表
        //queryWrapper为null 表示查询所有符合 Student 映射表的记录
        List<Student> list = studentMapper.selectList(null);
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            System.out.println(student);
        }
    }

    //    分页
    @Test
    public void test01() {

        //1 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数
        IPage<Student> page = new Page<>(1, 3);
        //2 执行分页查询
        IPage<Student> pages = studentMapper.selectPage(page, null);
        //3 获取分页结果
        System.out.println("当前页码值:" + pages.getCurrent());
        System.out.println("每页显示数:" + pages.getSize());
        System.out.println("一共多少页:" + pages.getPages());
        System.out.println("一共多少条数据:" + pages.getTotal());
        System.out.println("数据:" + pages.getRecords());
    }
}

常用注解说明

  • @TableField:字段映射(可指定条件、是否存在等)
  • @Version:乐观锁标记
  • @EnumValue:枚举类值标记
  • @TableLogic:逻辑删除标记

注意事项

  1. 实体类建议使用Lombok简化代码
  2. 避免实体类属性名与SQL关键字冲突(可通过@TableField("order")转义)
  3. 分页查询需先配置分页插件
  4. 多数据源场景需额外配置多个SqlSessionFactory

网站公告

今日签到

点亮在社区的每一天
去签到