Java 部分填充的实体对象,并在更新期间保持数据一致
我有一个查询,它只将表值的一部分提取到实体样式的对象中。这些值在图形界面中进行操作 问题是,更新可能会覆盖已修改的任何未使用的值,而不是保持它们不变Java 部分填充的实体对象,并在更新期间保持数据一致,java,sql,rdbms,ibatis,Java,Sql,Rdbms,Ibatis,我有一个查询,它只将表值的一部分提取到实体样式的对象中。这些值在图形界面中进行操作 问题是,更新可能会覆盖已修改的任何未使用的值,而不是保持它们不变 处理这个问题的正确方法是什么?我应该写一个进行部分更新的方法,还是仅仅为了编辑而创建一个新的实体对象?我也想知道如何最好地处理这个问题。在一些项目中,我可以做出假设,比如“bean中的null值表示该值未被触及”,我编写了UPDATE语句来“更新”所有字段,如果不为null,则将列值设置为bean的列值,否则将列值设置为db中预先存在的列值 UPD
处理这个问题的正确方法是什么?我应该写一个进行部分更新的方法,还是仅仅为了编辑而创建一个新的实体对象?我也想知道如何最好地处理这个问题。在一些项目中,我可以做出假设,比如“bean中的null值表示该值未被触及”,我编写了UPDATE语句来“更新”所有字段,如果不为null,则将列值设置为bean的列值,否则将列值设置为db中预先存在的列值
UPDATE entity
SET propertyA = NVL(newPropertyA, propertyA)
,propertyB = NVL(newPropertyB, propertyB)
,propertyC = NVL(newPropertyC, propertyC)
,...
正如我从您的标签中了解到的,您在项目中使用ibatis(mybatis) 因此,您可以在更新映射器中进行其他检查,例如:
<update id="update" parameterType="Client">
update user
<set>
<if test="Name != null">
NAME=#{Name},
</if>
<if test="First_Name != null">
FIRST_NAME=#{First_Name}
</if>
</set>
</update>
更新用户
名称=#{NAME},
FIRST_NAME=#{FIRST_NAME}