MyBatis-Plus

本文详细介绍了如何在SpringBoot项目中集成Mybatis-Plus和Druid连接池,包括pom.xml的依赖引入,配置文件(controller.yml)的设置,Mapper接口的创建,实体类和乐观锁的配置,日志打印以及分页查询和逻辑删除的功能实现。
摘要由CSDN通过智能技术生成

一、创建工程

二、pom.xml中引入mybatista-plus的包,以及Druid连接池(注意:mybatis-plus最好不要和myBatista的包一起引入进来,二者只存其一)

 <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
 <!--    druid连接池    -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.22</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

三、创建controller.yml文件,配置文件内容

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/hahuhu?serverTimezone=GMT&useSSL=false&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    #Druid的参数配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

四、创建mapper,在启动类加上@MapperScan注解

五、编写实体类

六、创建Mapper接口,只需继承BaseMapper即可

七、如果实体类名和表名不一样,需要加上备注

八、在测试类中进行查找测试

九、增加测试

生成的id默认 全局唯一id -- 雪花算法

调整主键生成策略

1.实体类属性 @TableId(type=IdType.AUTO)

2.数据库Id设置为主键自增

十、自动填充 create_time,update_time(阿里开发手册中一定要求的字段)

①数据库创建字段

②实体类添加属性+添加注解

③创建Handler

import java.util.Date;

@Component//放入容器
public class MyMetaObjectHandler implements MetaObjectHandler {
    //inset自动填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    //update自动填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

注意:添加的时间会相差8小时需要我们在controller.yml文件中修改一下时区

十一、乐观锁

多线程环境下,要更新一条记录的时候,希望这条记录没有被别人更新

①数据库增加version字段

②实体类增加属性+@Version

③在MybatisPlus配置类中 注册乐观锁拦截器(不要忘记注解)

@Configuration
public class MyBatisPlusConfig {

    //注册拦截器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //添加乐观锁的拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

乐观锁执行结果

十二、日志打印配置

在controller.yml中添加配置

mybatis-plus:
  #配置日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

日志打印结果

十三、分页查询(需要配置分页拦截器)

查询方法

 @Test
    public void testPage(){
        //参数1:当前页 参数2:每页显示条数
        Page<User> page = new Page<>(3,3);
        userMapper.selectPage(page, null);
        //page.getRecords(); 获取查询记录
        List<User> records = page.getRecords();
        records.forEach(System.out::println);
    }

十四、逻辑删除

执行的是update deleted=0 --> deleted=1

①数据库增加deleted字段

②实体类增加属性+@TableLogic注解

③配置controller.yml文件(需要在mybatis-plus下)

  #配置逻辑删除
  global-config:
    db-config:
      #逻辑删除字段名
      logic-delete-field: deleted
      #逻辑上已删除的值(默认1)
      logic-delete-value: 1
      #逻辑上未删除的值(默认0)
      logic-not-delete-value: 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早起不洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值