mybatis-plus--配置-(sql)日志输出-自动填充-分页-多数据源-逻辑删除

写在前面:
本文主要介绍mybatis-plus的配置,以后在有的时候在补充。欢迎交流。

文章目录

日志输出

调试的时候需要看执行的sql,这时候就很需要日志来记录查看了。

mybatis-plus的日志配置在yml里面

yml 复制代码
mybatis-plus:
  configuration:
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl    
    # 这个配置会将执行的sql打印到日志文件
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

输出到日志文件的时候需要配合着logging配置

yml 复制代码
logging:
  config: classpath:config/logback-spring.xml
  level:
    com:
      example:
        mapper: debug

自动填充

自动填充bean

java 复制代码
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
        return globalConfig;
    }

这里有2种写法,注释掉的是低版本的。高版本从3.3.0开始可以使用。不过3.3.0不要使用。有bug。

java 复制代码
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /**
     * 新增填充创建时间
     *
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
//        this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
//        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
        this.fillStrategy(metaObject,"createTime",LocalDateTime.now());
        this.fillStrategy(metaObject,"updateTime",LocalDateTime.now());
    }

    /**
     * 更新填充更新时间
     *
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
//        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
        this.fillStrategy(metaObject,"updateTime",LocalDateTime.now());
    }

}

那么如何设置哪些进行自动填充呢

在实体类上

java 复制代码
 @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

枚举类型,不过也可以直接不写这个属性。

  • DEFAULT:默认不处理

  • INSERT:插入时自动填充字段

  • UPDATE:更新时自动填充字

  • INSERT_UPDATE:插入和更新时自动填充字段

分页

插件bean

java 复制代码
@Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

        return interceptor;
    }

全局字段配置

yml 复制代码
mybatis-plus:
  global-config:
    db-config:
      # 主键ID类型
      id-type: none
      # 逻辑删除字段名称
      logic-delete-field: deleted
      # 逻辑删除-删除值
      logic-delete-value: 1
      # 逻辑删除-未删除值
      logic-not-delete-value: 0

多数据源

官方文档
依赖

xml 复制代码
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>${version}</version>
</dependency>

boot3需要

xml 复制代码
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
  <version>${version}</version>
</dependency>
yml 复制代码
spring:
  datasource:
    dynamic:
      primary: db1 # 配置默认数据库
      datasource:
        db1: # 数据源1配置
          url: 
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        db2: # 数据源2配置
          url: 
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
      durid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-wait: 60000
  autoconfigure:
    exclude:  com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid配置

service/mapper层加注解@DS

@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。

注解在 service 实现或 mapper 接口方法上,不要同时在 service 和 mapper 注解。

java 复制代码
@DS("db2") 
public interface Mapper extends BaseMapper<User> {
}

@Service
@DS("db2")
public class ServiceImpl extends ServiceImpl<ModelMapper, Model> implements IModelService {}
  @DS("db2")
  List<User> selectAll();
相关推荐
ZWZhangYu3 小时前
LangChain 构建向量数据库和检索器
数据库·langchain·easyui
feifeigo1234 小时前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
火龙谷5 小时前
【nosql】有哪些非关系型数据库?
数据库·nosql
焱焱枫6 小时前
Oracle获取执行计划之10046 技术详解
数据库·oracle
双力臂4047 小时前
MyBatis动态SQL进阶:复杂查询与性能优化实战
java·sql·性能优化·mybatis
qq_392397128 小时前
Redis常用操作
数据库·redis·wpf
A__tao9 小时前
一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
java·sql·mysql
一只fish9 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
花好月圆春祺夏安10 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
慕y27410 小时前
Java学习第十五部分——MyBatis
java·学习·mybatis