Фон: для той же записи в базе данных, если два человека изменяют данные одновременно, а затем, наконец, синхронизируют их с базой данных, результат будет непредсказуемым из -за параллелизма. Самое простое решение - добавить поле версии в запись в таблице. При изменении записи вам нужно сравнить, соответствует ли версия. Если он соответствует, он будет обновлен, и если он не совпадает, он потерпит неудачу напрямую. Если обновление успешно, установлен версия+1, которая является так называемой оптимистичной блокировкой. Конечно, такая логика лучше всего быть прозрачной для разработчиков, и этот плагин здесь, чтобы сделать это.
1. Метод использования: добавьте следующую конфигурацию в файл конфигурации Mybatis, и она завершена.
<blicins> <плагин receptor = "com.chrhc.mybatis.locker.interceptor.optimistricker"/> </plugins>
2. Описание конфигурации плагина:
Атрибут Java, соответствующий столбцу с оптимистичной блокировкой конфигурации базы данных по умолчанию для подключаемого модуля. Здесь вы можете настроить срок службы атрибута, например:
<blicins> <plagin receptor = "com.chrhc.mybatis.locker.interceptor.optimistricker"> <name = "versioncolumn" value = "xxx"/> <!-имя столбца базы данных-> <property name = "value =" xxx "/> <!
3. Эффект:
Ранее: Обновить имя пользователя набор =?, Пароль =? где id =?
After: Обновить имя пользователя name =?, Пароль =?, Версия = версия+1 где id =? и версия =?
4. Описание значения версии:
1. Когда подготовленное предприятие получает значение версии, плагин автоматически увеличится на 1.
2. Весь процесс управления оптимистичной блокировкой прозрачен для пользователя, что очень похоже на оптимистичную блокировку Hibernate, и пользователям не нужно заботиться о значении оптимистичной блокировки.
5. Описание плагина: Описание:
Плагин перехватывает оператор обновления, выполненный MyBatis, и добавляет оптимистичную отметку блокировки в исходном операторе SQL. Например, исходный SQL:
Обновить имя пользователя имя =?, пароль =? где id =?,
Тогда пользователю не нужно изменять оператор SQL. С помощью плагина приведенное выше оператор SQL будет автоматически переписано как:
Обновить пользователь набор имя =?, пароль =?, версия = версия + 1 где id =? и версия =?,
Форма, пользователям не нужно заботиться о значении до и после версии. Все действия прозрачны для пользователей, и плагин сами завершает эти функции.
6. Конвенция по умолчанию:
1. Заявления оператора обновления, перехваченные этим плагином, являются подготовленными Statatement, что действительна только для SQL таким образом;
2. Тег <pehite> mapper.xml должен соответствовать методу интерфейса Mapper, то есть с использованием метода, рекомендованного Mybatis, но несколько интерфейсов могут соответствовать тегу mapper.xml <Update>;
3. Этот плагин ничего не сделает с результатами SQL, и то, что должен вернуть сам SQL, это;
4. Плагин перехватывает все операторы обновления по умолчанию. Если пользователь не хочет оптимистичного управления блокировкой для определенного обновления, добавьте @versionlocker (false) или @versionlocker (value = false) в соответствующий метод интерфейса Mapper, чтобы подключаемый модуль ничего не сделал для этого обновления, что эквивалентно отсутствию этого плагина;
5. Этот плагин в настоящее время не поддерживает оптимистичные блокировки для обновлений партий. Причина в том, что обновления пакетов не имеют много сценариев приложений в реальной разработке, и трудно разработать оптимистичные блокировки для обновлений партий;
6. Тип параметра интерфейса Mapper должен соответствовать фактическому типу. Следовательно, плагин использует типы параметров и параметры в качестве сопоставления в соответствии с подписью метода;
Адрес Github: https://github.com/xjs1919/locker
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.