Частично заполненные объекты объектов и сохранение данных согласованными во время обновлений - PullRequest
3 голосов
/ 24 ноября 2011

У меня есть запрос, который выбирает только часть значений таблицы в объект стиля объекта.Этими значениями манипулируют в графическом интерфейсе.

Проблема заключается в том, что обновление может перезаписывать любые неиспользуемые значения, которые были изменены, а не оставлять их нетронутыми.

Как правильно обращатьсяс этим?Должен ли я написать метод, который выполняет частичное обновление или просто создать новый объект сущности для целей редактирования?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2012

Как я понял из ваших тегов вы используете 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>
2 голосов
/ 23 декабря 2011

Мне также любопытно, как с этим лучше всего справляться.В некоторых проектах, где я мог сделать допущения, такие как «нулевые значения в бине означают, что значение не было затронуто», я написал инструкцию UPDATE, чтобы «обновить» все поля, установив значение столбца в значение бина, если не ноль, иначе устанавливая значение столбца к существующему значению столбца в db.

UPDATE entity
  SET propertyA = NVL(newPropertyA, propertyA)
     ,propertyB = NVL(newPropertyB, propertyB)
     ,propertyC = NVL(newPropertyC, propertyC)
     ,...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...