首页 > 数据库 >Mybatis Plus多源数据库和自动更新updateTime问题

Mybatis Plus多源数据库和自动更新updateTime问题

时间:2024-09-27 09:50:37浏览次数:4  
标签:updateTime false Plus 自动更新 import Date new com public

多源数据库配置

1、依赖配置

    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.2'
    implementation 'com.baomidou:dynamic-datasource-spring-boot-starter:3.5.2'

2、配置文件

spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/db1?autoReconnect=true&failOverReadOnly=false&characterEncoding=utf8&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false
          username: test
          password: test
          driver-class-name: com.mysql.cj.jdbc.Driver
        db2:
          url: jdbc:mysql://localhost:3306/db2?useSSL=false&autoReconnect=true&statementInterceptors=brave.mysql.TracingStatementInterceptor&characterEncoding=utf8&serverTimezone=Asia/Shanghai
          username: test
          password: test

3、数据库切换

@DS("master")
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
}

4、debug日志

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

自动更新数据库的updateTime字段

1、实体类字段

@Data
public class UserEntity {

    @TableId(type = AUTO)
    private Integer id;

    @TableField("user_id")
    private String userId;

    /**
     * 创建时间
     */
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

2、配置

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Date;

@Configuration
public class MybatisConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    @Bean
    public MetaObjectHandler metaObjectHandler() {
        return new MetaObjectHandler() {
            @Override
            public void insertFill(MetaObject metaObject) {
                this.setFieldValByName("createTime", new Date(), metaObject);
                this.setFieldValByName("updateTime", new Date(), metaObject);
            }

            @Override
            public void updateFill(MetaObject metaObject) {
                this.setFieldValByName("updateTime", new Date(), metaObject);
            }
        };
    }
}

3、使用方式

@DS("master")
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
}
public interface UserRepository extends IService<UserEntity> {
     void update(UserEntity entity);
}
@Slf4j
@Repository
@RequiredArgsConstructor
public class UserRepositoryImpl extends ServiceImpl<UserMapper, UserEntity> implements UserRepository {
    @Override
    public void update(UserEntity entity) {
        this.update(entity, new LambdaUpdateWrapper<UserEntity>()
                    .eq(UserEntity::getUserId, userId));
    }
}

注意,以下方式是无法自动更新时间的

this.update(new LambdaUpdateWrapper<UserEntity>()
                    .eq(UserEntity::getUserId, userId)
                    .set(UserEntity::getNickName, "nickName"));

标签:updateTime,false,Plus,自动更新,import,Date,new,com,public
From: https://www.cnblogs.com/ylty/p/18433843

相关文章

  • 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)
    三,MyBatis-Plus的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)@目录三,MyBatis-Plus的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1.条件构造器介绍2.准备工作:3.等值查询3.1eq(条件筛选属性=?)3.2allEq(满足多个条件字段的值的筛选)3.3......
  • MyBatisPlus快速入门
    MyBatisPlus需要的基础:MyBatisSpringSpringMVC一. MyBatisPlus概述1.介绍 MyBatis-Plus(简称MP)是一个 MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生2.特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗......
  • MyBatis-Plus的使用基础入门案例
    目录文章目录目录简介特性框架结构第一个案例准备工作初始化工程添加依赖完整的pom配置编写实体类编写Mapper修改启动类--扫描Mapper测试运行简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生......
  • SpringBoot整合Mybatis-Plus实现登录
    1.添加依赖在pom.xml文件中添加以下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency>......
  • mybatis-plus
    Mybatis-PlusMyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。其突出的特性如下:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑强大的CRUD操作:内置通用Mapper、通用Service,提供了大量的通用的......
  • Let‘s Encrypt基于阿里云Linux服务器搭建自动更新免费的SSL证书
    前言:‌SSL免费证书的有效期从2024年4月底开始从12个月缩短至3个月。对于使用免费SSL证书的中小企业或者个人开发者而言,每三个月去手动部署一次证书文件很容易遗忘,从而导致服务器接口或者网站访问异常,今天把基于阿里云一套自动更新的流程详细写出来。本系统环境基于阿里云......
  • 【已解决】ElementPlus 的 el-menu 组件如何用 js 控制展开某个子菜单,并在其他组件中
    文章目录需求几次探索官网寻找线索(解决办法)需求我如何用代码来实现ElementPlus的菜单的展开和收缩呢?几次探索尝试通过找到节点之后,使用click事件,失败了//伪代码如下consthandleFindNodeAndClick=()=>{console.log('handleFindNodeAndClick');......
  • Invalid bean definition with name ‘myBatisPlusApplication‘ defined in class pa
    目录问题出现背景问题分析问题解决一、背景        黑马课程的SSM框架里面的MyBatisPlus部分的学习,学习的是selecPage方法的测试时候出现的,因为要配分页的拦截器,所有定义了一个config的类,同时配了@Configuration(@Component好像也可正常使用),然后去到测试时候就......
  • 自修C++PrimerPlus--第九章(上)
    目录1.类作用域1.1基本介绍1.2作用域为类的常量1.3作用域内枚举2.内存模型和名称空间2.1头文件重复包含问题2.2存储连续性2.3独立编译的过程2.4链接属性2.4.1外部连接性2.4.2内部连接性2.4.3无连接性2.5自动变量和栈2.6寄存器变量2.7静态变量2.8extern举例说......
  • view-ui-plus iView Vue 3 table 自定义输入筛选条件
    使用自定义表格头实现筛选:为何和如何在使用view-ui-plus(iView的Vue3版本)时,发现原生的表格组件不支持自定义输入筛选条件为什么要使用自定义表格头?原生组件的限制view-ui-plus的表格组件提供了基本的功能,但在原生实现中,对于复杂的筛选条件或输入框的支持较为有限。......