mybatis-dynamic-query 3.2.13 更新
更新日期:
项目地址: mybatis-dynamic-query
前言
主要这次更新是针对 UpdateQuery的一个增强 – 对象更新
, 一直以来大家都在用 updateByDynamicQuery 或者 updateSelectiveByDynamicQuery, 先简单介绍一下
- updateByDynamicQuery / updateByPrimaryKey 更新所有字段
- updateSelectiveDynamicQuery / updateSeletiveByPrimaryKey 更新字段不为 null 的字段
但是有个情况上面两个方法是不好处理的,比如我又想更新某个字段为 null, 又想忽略对 create_time 和 update_time 赋值(mysql 中 create_time 和 update_time 是想让数据库赋值), 这样其实是不好用的。为了解决这个问题,我们新做了一个 UpdateQuery 让我们可以更具有自定义性。
使用
set 属性更新
这个就和我们写普通的 SQL 差不多, 就是对每个属性赋值。
1 | UpdateQuery<Bug> updateQuery = UpdateQuery.createQuery(Bug.class) |
set 对象更新
我们甚至可以直接把一个对象放进去全部更新, 并且可以通过配置选择(select)更新那些字段或者忽略(ignore)那些字段, (注意 select 优先级比 ignore 高,有 select 就会忽略 ignore)
- select 选择属性更新
1 | int id = 10000; |
我们看一下最终结果,确实只更新了 assignTo
1 | JDBC Connection [HikariProxyConnection@1724399560 wrapping conn0: url=jdbc:h2:mem:default user=SA] will not be managed by Spring |
- ignore 忽略属性更新
1 | int id = 10000; |
我们看一下最终结果,确实只更新了 assignTo, 一般推荐对 id, create_time, update_time 这三个字段做忽略,让数据库自己赋值
1 | JDBC Connection [HikariProxyConnection@1198158701 wrapping conn0: url=jdbc:h2:mem:default user=SA] will not be managed by Spring |
小结
UpdateQuery 已经可以完全弥补 UpdateSeletive 或者 Update 这两个方法不足的地方。