使用tkmapper避免更新on update字段

简介: 使用tkmapper避免更新on update字段

使用tkmapper避免更新on update字段

在日常开发中,我们的MySQL数据库表都会有mtime字段,用来记录某条记录最后一次更新的时间,一般设置为on update,也就是这条记录有任何的变动,mtime字段的值就会自动更新。


正常情况下,mtime字段是没有业务含义的。但是在最近的一次开发中,遇到了一个特例,mtime具备了业务的含义,因此想在不对其进行修改的情况下,修改该表的其他字段。如果使用SQL语句,非常简单,代码如下:

UPDATE student
SET grade = 'A', mtime = mtime
WHERE name = 'Ryan';


就可以将表中所有name字段值为Ryan的记录的grade字段的值更新为A了。


但是使用tkmapper就要稍微复杂一些,因为表中所有name字段值为Ryan的记录可能有很多,且每条记录的mtime不尽相同。我们必须先去查询所有符合条件的记录的mtime,然后再根据主键去更新。代码如下:

Weekend<Student> weekend = Weekend.of(Student.class,  true, true);
weekend.weekendCriteria().andEqualTo(Student::getName, "Ryan");
List<Student> studentList = studentMapper.selectByExample(weekend);
studentList.forEach(student -> {
  student.setGrade("A");
  student.setMtime(student.getMtime());
  studentMapper.updateByPrimaryKeySelective(student);
});

这样就可以在不改变mtime的情况下,修改我们想要更新的字段的值。

目录
相关文章
|
JavaScript 前端开发
【Intelli IDEA】Idea 打不开vue 项目,Idea 打开vue项目卡死的解决方案
【Intelli IDEA】Idea 打不开vue 项目,Idea 打开vue项目卡死的解决方案
1448 0
|
Oracle 关系型数据库 Linux
Virtualbox上安装Linux系统(CentOS7)(图文超详细)
Virtualbox上安装Linux系统(CentOS7)(图文超详细)
5672 1
|
传感器 API Android开发
雷电模拟器防检测工具, 模拟器防检测 伪装手机,安卓模拟器防检测工具
硬件特征检测通过CPUID指令和显卡信息判断虚拟环境110 系统环境检测通过查找模拟器特有文件和进程112
|
Linux iOS开发 UED
LibreOffice 25.8 (Linux, macOS, Windows) - 自由免费的全能办公套件
LibreOffice 25.8 (Linux, macOS, Windows) - 自由免费的全能办公套件
919 0
|
Java 应用服务中间件
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
3624 0
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
|
JSON Java 应用服务中间件
利用esaypoi自定义Excel表格模板导入与导出表单数据
今天工作中又遇到了excel导出数据的功能,在这里我将自己自定义的Excel模板和相关的代码拿出来,解释一下如何进行操作,以便日后能够方便的进行功能开发,提高效率。
2308 0
|
缓存 安全 easyexcel
阿里开源的这个库,让Excel导出不再复杂(填充模板的使用指南)
前文 说了写操作,可以实现简单的列表导出,还能 定义样式。有时候,我们还需要导出的一个大表单,或者是表单+列表的形式,这个时候,我们就需要填充功能。
2483 0
阿里开源的这个库,让Excel导出不再复杂(填充模板的使用指南)
|
IDE Linux 开发工具
linux镜像下载和vmware虚拟主机部署
linux镜像下载和vmware虚拟主机部署
1493 0
linux镜像下载和vmware虚拟主机部署
|
Go
The “gopls“ command is not available. Run “go get -v golang.org/x/tools/gopls“ to install.【已解决】
The “gopls“ command is not available. Run “go get -v golang.org/x/tools/gopls“ to install.【已解决】
546 3
|
编解码 安全 Java
如何在Spring Boot中实现数据加密
如何在Spring Boot中实现数据加密
1098 1