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

目录
相关文章
|
关系型数据库 MySQL Java
confluence部署
confluence部署
1395 0
confluence部署
|
移动开发 安全 前端开发
优化 uniapp 发行操作:一键打包、混淆代码
优化 uniapp 发行操作:一键打包、混淆代码
609 0
|
存储 算法 安全
【加密算法】AES对称加密算法简介
【加密算法】AES对称加密算法简介
|
网络协议 Java Nacos
nacos常见问题之在web界面 上下线服务时报错 400如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
322 0
|
Linux Shell 开发工具
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
10分钟让你的Linux Shell终端变得更优雅,更高效——【Linux服务器下OhMyZsh+P10k安装实践】
434 1
鸿蒙NEXT-状态管理V1和状态管理V2的差别
在V2中,子组件通过@Event调用父组件事件实现双向绑定,需使用箭头函数确保this指向正确。@State改为@Local,不能与@Observed混用。@Watch变更为@Monitor,配合@Trace实现深层监听。示例展示了@Event、@Local、@Monitor的基本用法,适用于ArkTS组件间通信和状态管理。
234 0
|
4月前
|
机器学习/深度学习 算法
WebSailor:探索 WebAgent的超人类推理能力
通义实验室推出WebSailor方案,通过创新的post-training方法显著提升开源模型在复杂网页推理任务中的表现。该方案包括合成高不确定性数据、多轮工具调用轨迹重构及强化学习算法DUPO应用,在多个评测中展现优越性能。
363 1
|
10月前
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
642 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
消息中间件 Java Spring
Spring Boot与NATS消息系统的集成方法
Spring Boot与NATS消息系统的集成方法
|
存储 监控 Go
面向OpenTelemetry的Golang应用无侵入插桩技术
文章主要讲述了阿里云 ARMS 团队与程序语言与编译器团队合作研发的面向OpenTelemetry的Golang应用无侵入插桩技术解决方案,旨在解决Golang应用监控的挑战。