滚雪球学MyBatis-Plus(04):基础配置

前言

在上期内容中,我们详细介绍了如何进行项目初始化,包括添加 MyBatis Plus 依赖、配置数据库连接,以及创建基础的实体类和 Mapper 接口。这些步骤为我们搭建了一个基本的开发框架,使我们能够快速上手 MyBatis Plus 的开发工作。

本期内容将继续深入,重点介绍 MyBatis Plus 的基础配置。我们将配置 MyBatis Plus 核心插件(如分页插件、乐观锁插件等),并设置日志和性能分析,以确保项目在开发和运行中的高效性和可靠性。

一、配置分页插件

分页是处理大量数据时常用的功能。MyBatis Plus 提供了分页插件,简化了分页操作的实现。

  1. 创建配置类

    • src/main/java/com/example/mybatisplusdemo/config 目录下创建 MyBatisPlusConfig 类:
      package com.example.mybatisplusdemo.config;
      
      import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class MyBatisPlusConfig {
      
          @Bean
          public PaginationInterceptor paginationInterceptor() {
              return new PaginationInterceptor();
          }
      }
      
  2. 配置说明

    • PaginationInterceptor:这是 MyBatis Plus 提供的分页拦截器,它会自动识别数据库类型并生成相应的分页 SQL。
二、配置乐观锁插件

乐观锁是一种在并发环境下处理数据一致性的机制。MyBatis Plus 提供了乐观锁插件,简化了乐观锁的实现。

  1. MyBatisPlusConfig 类中添加乐观锁插件配置

    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
    
  2. 使用乐观锁注解

    • 在实体类中添加 @Version 注解,指定乐观锁版本字段:
      package com.example.mybatisplusdemo.entity;
      
      import com.baomidou.mybatisplus.annotation.TableId;
      import com.baomidou.mybatisplus.annotation.TableName;
      import com.baomidou.mybatisplus.annotation.Version;
      import lombok.Data;
      
      @Data
      @TableName("user")
      public class User {
          @TableId
          private Long id;
          private String name;
          private Integer age;
          private String email;
          @Version
          private Integer version;
      }
      
三、配置性能分析插件

在开发过程中,我们需要了解 SQL 语句的执行性能,以便进行优化。MyBatis Plus 提供了性能分析插件,帮助我们分析和优化 SQL 性能。

  1. MyBatisPlusConfig 类中添加性能分析插件配置

    import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
    import org.springframework.context.annotation.Profile;
    
    @Bean
    @Profile({"dev", "test"}) // 设置 dev 和 test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(1000); // ms,超过此设置的ms则sql不执行
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }
    
  2. 配置说明

    • @Profile({"dev", "test"}):指定该配置仅在开发和测试环境下启用。
    • PerformanceInterceptor:设置 SQL 执行的最大时间,如果超过这个时间,SQL 不会执行,并且会输出格式化的 SQL 语句。
四、日志配置

为了便于调试和分析,我们需要配置项目的日志输出。

  1. 配置日志级别

    • application.yml 文件中添加日志配置:
      logging:
        level:
          com.example.mybatisplusdemo: debug
          com.baomidou.mybatisplus: debug
      
  2. 使用 logback 配置日志输出格式

    • src/main/resources 目录下创建 logback-spring.xml 文件,并添加以下配置:
      <configuration>
          <property name="LOG_FILE" value="mybatis-plus-demo.log"/>
          <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
              <file>${LOG_FILE}</file>
              <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
              </rollingPolicy>
              <encoder>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
              </encoder>
          </appender>
      
          <root level="info">
              <appender-ref ref="FILE" />
          </root>
      </configuration>
      
五、测试配置

为了确保我们的配置正确,我们需要进行一些基本的测试。

  1. 测试分页功能

    • UserMapperTest 中添加分页测试:
      @Test
      public void testSelectPage() {
          Page<User> page = new Page<>(1, 5);
          IPage<User> userPage = userMapper.selectPage(page, null);
          assert userPage.getRecords().size() == 5;
      }
      
  2. 测试乐观锁功能

    • UserMapperTest 中添加乐观锁测试:
      @Test
      public void testOptimisticLock() {
          User user = userMapper.selectById(1L);
          user.setAge(user.getAge() + 1);
          userMapper.updateById(user);
      }
      
  3. 测试性能分析插件

    • 观察控制台输出,确保 SQL 语句格式化且执行时间在预期范围内。
六、总结

通过本篇文章,你已经学会了如何配置 MyBatis Plus 的分页插件、乐观锁插件和性能分析插件,并设置了日志输出。这些配置不仅提高了项目的开发效率,还为后续的开发和调试提供了便利。

下期预告

在下一期内容中,我们将深入探讨如何创建实体类和 Mapper 接口。这些实体类将映射到数据库表,而 Mapper 接口则提供与数据库交互的方法。通过这些步骤,你将学会如何将数据库表结构映射到 Java 对象,并实现对数据库的基本操作。敬请期待!

通过这些基础配置和测试,我们为 MyBatis Plus 项目的进一步开发奠定了坚实的基础。希望你在学习过程中能有所收获,并应用到实际项目中。让我们继续这段学习之旅吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug菌¹

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值