почему mybatis обновление и удаление не работают? - PullRequest
1 голос
/ 18 февраля 2020

Я разрабатываю микросервис с использованием myBatis, но операторы UPDATE и DELETE в нем не работают. Даже простые операторы обновления не выполняются всякий раз, когда я выполняю его, просто завис и нет ответа

<update id = "update" parameterType="map">
        UPDATE TESTDB 
             SET
                <foreach item = "entry" index = "key" separator = "," collection = "SET">
                     ${key} = #{entry}
                </foreach>

            WHERE
                <foreach item = "entry" index = "key" separator = "AND" collection = "WHERE">
                     ${key} = #{entry}
                </foreach>

    </update>

вызывающая функция

session.update("test.update",map);

map содержит ключи и значения SET и WHERE согласно запросу json, указанному ниже

Поскольку я использую метод PUT, мой запрос json, который я помещаю в карты, такие как SET и WHERE.

{
"data":
[   
    {
        "set":
        [
            {
                "ID":"2",
                "NAME":"abc",
                "TYPE":"abc"
            }
        ],
        "where":
        [
          {

                 "NAME":"a",
                 "ID":"1"
          }
        ]
    }
]

}

Я получаю правильный запрос в журналах, но когда я выполняю его через POSTMAN, я получаю его, он показывает, что он отправляет и загружает, а не выполняет только то, что отправляет, но не отвечает.

Эта проблема связана только с удалением и остальные запросы на обновление работают нормально.

ЗАПРОС ОТПРАВЛЕНИЯ ПОЧТОВЫМ

1 Ответ

0 голосов
/ 19 февраля 2020

Спасибо, @ Улыбнись.

У меня есть причина, почему это не удалось. Я создал SqlSession, и этот сеанс используется всеми операциями, и этот сеанс блокирует строки, которые я пытаюсь обновить или удалить.

Решение: -

  1. Создайте отдельный сеанс для всех операций.

  2. Проверьте, является ли сеанс пустым или нет, если он указывает на какой-либо другой предыдущий сеанс, и назначьте новый сеанс в нем используется sqlSessionFactory, чтобы он не блокировал строки.

...