Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部分填充的实体对象,并在更新期间保持数据一致_Java_Sql_Rdbms_Ibatis - Fatal编程技术网

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}