MyBatis-Plus不使用数据库默认值的问题及解决

作者:养-乐多 时间:2023-11-13 17:37:20 

MyBatis-Plus不使用数据库默认值的问题

有时候我们在设计数据表时希望某些字段使用默认值,比如create_time、和update_time这样在数据库中设置:

`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

Navicat截图如下(网络图片)

MyBatis-Plus不使用数据库默认值的问题及解决

MyBatis-Plus不使用数据库默认值的问题及解决

也就是说只要是插入操作create_time和update_time字段就使用系统时间,只要是更新时update_time字段也随着更新,无需手动赋值mysql自动帮我们做了。

MyBatis-Plus如何设置呢?

有时候我们的业务是先查询到实体对象,然后修改某个值再进行更新,比如这样:

LambdaQueryWrapper<ImKnowledgeSearchRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
       lambdaQueryWrapper.eq(ImKnowledgeSearchRecord::getKeyword, keyword);
       ImKnowledgeSearchRecord knowledgeSearchRecord = this.getOne(lambdaQueryWrapper, true);
       if (knowledgeSearchRecord == null) {
           knowledgeSearchRecord = new ImKnowledgeSearchRecord();
           knowledgeSearchRecord.setKeyword(keyword);
           knowledgeSearchRecord.setSearchCount(0);
       }        knowledgeSearchRecord.setSearchCount(knowledgeSearchRecord.getSearchCount() + 1);
       // knowledgeSearchRecord.setUpdateTime(null);
this.updateById(knowledgeSearchRecord);

注意上面的实体类中有CreateTime和UpdateTime字段,如果不做任何配置的画,MyBatis-Plus默认使用

this.getOne(lambdaQueryWrapper, true);

查询出来的值作为参数赋值,然后你就会发现update_time字段并没有随着修改而变化,但这不符合我们数据表的设计初衷,那该怎么做?

/**
    * 创建时间(数据库自动生成,无需手动赋值)
    */
   @TableField(insertStrategy = FieldStrategy.NEVER)
   private Date createTime;
   /**
    * 修改时间(数据库自动生成,无需手动赋值)
    */
   @TableField(updateStrategy = FieldStrategy.NEVER)
   private Date updateTime;

使用@TableField注解,分别设置插入策略和更新策略为FieldStrategy.NEVER,表示这两个字段不加入SQL,这样生成的插入和修改的SQL语句就不会包含这两个字段。

只使用MyBatis-Plus的注解,而不用配置数据库

我们在项目开发时,特别是多module项目场景时,可能会遇到某些实体类要使用mybatis-plus的注解,如@tableName或者@TableField等, 但是如果引入mybatis依赖就要配置数据库,但实际上有可能这个项目只是个公共实体类、接口类等的一个公共module,在该公共module中写一遍这些实体类,接口等,然后在其他module中直接依赖这个公共module就可以了,所以在这个场景下,这个公共module就不需要连接数据库,自然而然也不需要配置数据库

解决

因为mybatis-plus的maven依赖一旦添加了是需要配置数据库的,所以我们需要换一个依赖

如下所示,mybatis-plus-annotation依赖只包含mybatis-plus的注解

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>3.2.0</version>
        </dependency>

来源:https://blog.csdn.net/qq_15003505/article/details/114087949

标签:MyBatis-Plus,数据库,默认值
0
投稿

猜你喜欢

  • Spring五大类注解读取存储Bean对象的方法

    2023-11-09 22:07:07
  • 浅谈java多态的实现主要体现在哪些方面

    2023-08-17 07:41:32
  • Java基于享元模式实现五子棋游戏功能实例详解

    2023-07-23 16:20:18
  • java对象转换String类型的三种方法

    2023-11-09 15:50:59
  • Java Springboot整合支付宝接口的教程详解

    2023-11-06 19:41:49
  • android压力测试命令monkey详解

    2023-06-17 00:36:29
  • java操作mongodb之多表联查的实现($lookup)

    2023-08-08 10:24:07
  • Android仿百度图片查看功能

    2023-09-26 07:50:24
  • Spring框架学习常用注解汇总

    2023-11-10 17:38:53
  • springboot2.x使用Jsoup防XSS攻击的实现

    2023-11-17 06:40:47
  • Android应用开发SharedPreferences存储数据的使用方法

    2023-06-23 16:02:47
  • java实现银行ATM管理系统

    2023-10-30 14:50:51
  • Java实现双向循环链表

    2023-11-08 04:14:40
  • Java实现查找当前字符串最大回文串代码分享

    2023-07-30 04:05:02
  • 如何在mapper文件中使用in("str1","str2")

    2023-07-10 10:40:51
  • 详解Spring全局异常处理的三种方式

    2023-11-11 15:31:47
  • Java 实现判定顺序表中是否包含某个元素(思路详解)

    2023-09-11 01:03:04
  • Java 数据库连接池详解及简单实例

    2023-08-10 15:54:07
  • 常用Maven库,镜像库及maven/gradle配置(小结)

    2023-11-20 23:44:00
  • SpringBoot中打war包需要注意事项

    2023-11-05 19:44:42
  • asp之家 软件编程 m.aspxhome.com