MyBatis-Plus不使用数据库默认值的问题及解决
MyBatis-Plus不使用数据库默认值的问题
有时候我们在设计数据表时希望某些字段使用默认值,比如create_time、和update_time这样在数据库中设置:
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
Navicat截图如下(网络图片)
也就是说只要是插入操作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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java使用poi在excel单元格添加超链接设置字体颜色的方法
这篇文章主要介绍了java使用poi在excel单元格添加超链接,设置字体颜色,poi功能还是很强大的,基本能想到的功能都能通过poi实现,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-09-09Spring MVC集成springfox-swagger2构建restful API的方法详解
这篇文章主要给大家介绍了关于Spring MVC集成springfox-swagger2构建restful API的相关资料,文中介绍介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。2017-06-06SpringBoot详解如果通过@Value注解给静态变量注入值
这篇文章主要介绍了springboot如何通过@Value给静态变量注入值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-06-06SpringBoot+Querydsl 框架实现复杂查询解析
本篇主要将介绍的是利用spring query dsl框架实现的服务端查询解析和实现介绍,对SpringBoot Querydsl 查询操作感兴趣的朋友一起看看吧2022-05-05springboot接收http请求,解决参数中+号变成空格的问题
这篇文章主要介绍了springboot接收http请求,解决参数中+号变成空格的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
最新评论