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

目录
相关文章
|
5月前
|
SQL 数据库
`UPDATE FROM` 的语法以及常见的更新操作方式
`UPDATE FROM` 的语法以及常见的更新操作方式
978 2
|
11月前
|
SQL Java 关系型数据库
h2下update set字段重复处理拦截器
h2下update set字段重复处理拦截器
65 0
|
人工智能
ES中更新字段和删除字段的操作
ES中更新字段和删除字段的操作
|
关系型数据库 MySQL
Mysql中通过关联update将一张表的一个字段更新到另外一张表中
Mysql中通过关联update将一张表的一个字段更新到另外一张表中
1109 0
MySQL_03--使用UPDATE根据一个表中的数据条数,更新另一个表的计数字段
根据表t_distribute中标志字段completed的完成情况,通过评委的userID对应到t_user_judge中,进一步更新分配的评分作品数assignNum、完成的评分作品数judgeNum两个字段。
|
SQL 关系型数据库 MySQL
MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
2118 0
EF部分字段更新,自动忽略null字段
原文:EF部分字段更新,自动忽略null字段  某个项目里的update代码是类似这样的 public T Update(T entity) where T : ModelBase { var set = this.
1621 0
|
Java 数据库 缓存
JPA更新后查询结果还是更新前的
此时数据库数据状态如下 执行如下流程代码 执行update语句,更新状态字段 语句执行完毕,然而看看数据库 hibernate执行更新需要较长时间,因此需要等待,否则无法获得更新后字段 JPA更新一条记录,数据库查看更新成功,但是紧接着查询,发现还是更新前的结果,怀疑缓存问题但是网上查了下没解决成功。
2109 0