使用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的情况下,修改我们想要更新的字段的值。

目录
打赏
0
0
0
0
6
分享
相关文章
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)
372 1
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
299 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云 ARMS 团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。
SpringBoot多个@Scheduled注解的方法,会阻塞吗
【6月更文挑战第9天】SpringBoot多个@Scheduled注解的方法,会阻塞吗
1061 5
在 PostgreSQL 中使用 IN
【8月更文挑战第12天】
696 0
在 PostgreSQL 中使用 IN
【工具类】java数字金额转换成大写
【工具类】java数字金额转换成大写
781 0
tkMapper之使用Weekend拼接条件进行条件查询
tkMapper之使用Weekend拼接条件进行条件查询
483 0
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问