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();
相关推荐
九.九13 分钟前
CANN 算子生态的底层安全与驱动依赖:固件校验与算子安全边界的强化
大数据·数据库·安全
蓝帆傲亦17 分钟前
代码革命!我用Claude Code 3个月完成1年工作量,这些实战经验全给你
jvm·数据库·oracle
亓才孓21 分钟前
[JDBC]事务
java·开发语言·数据库
PD我是你的真爱粉26 分钟前
FastAPI使用tortoiseORM
数据库·fastapi
侠客行03177 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
剩下了什么8 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥8 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉9 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
老毛肚9 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
java搬砖工-苤-初心不变9 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql