Стратегия глобального обновления Mybatis-Plus и стратегия запроса вставки

предисловие

Когда я недавно mybatis-plusработал над проектом updatById, я обнаружил, что при использовании метода возникла проблема при обновлении определенного поля.Общая бизнес-операция заключается в обновлении поля, которое не является пустым.Оказалось, что все поля были обновлены. Это связано с тем, что mybatis-plus global Вызвано стратегией обновления, мы можем решить эту проблему с помощью соответствующей глобальной конфигурации.


Глядя на официальные документы, мы видим, что существует три стратегии глобальной конфигурации базы данных, а именно стратегия запроса, стратегия обновления и стратегия добавления.

Нажмите здесь, чтобы войти в официальную документацию

Конфигурация политики глобальной базы данных

  1. конфигурация
#全局策略
mybatis-plus.global-config.db-config.update-strategy=not_empty
mybatis-plus.global-config.db-config.insert-strategy=not_empty
mybatis-plus.global-config.db-config.select-strategy=not_empty

Дополнительные значения конфигурации см. в исходном коде следующим образом.

package com.baomidou.mybatisplus.annotation;

public enum FieldStrategy {
    
    
    IGNORED,
    NOT_NULL,
    NOT_EMPTY,
    DEFAULT,
    NEVER;

    private FieldStrategy() {
    
    
    }
}
  1. IGNORED игнорирует решение, все поля обновляются и вставляются
  2. NOT_NULL только обновляет и вставляет значения, отличные от NULL
  3. NOT_EMPTY Обновлять и вставлять только значения, отличные от NULL, и непустые строки
  4. НИКОГДА никогда не делайте обновления и вставки
  5. ПО УМОЛЧАНИЮ По умолчанию NOT_NULL

Значение по умолчанию видно из исходного кода

public static class DbConfig {
    
    
        private IdType idType;
        private String tablePrefix;
        private String schema;
        private String columnFormat;
        private String propertyFormat;
        private boolean tableUnderline;
        private boolean capitalMode;
        private IKeyGenerator keyGenerator;
        private String logicDeleteField;
        private String logicDeleteValue;
        private String logicNotDeleteValue;
        private FieldStrategy insertStrategy;
        private FieldStrategy updateStrategy;
        private FieldStrategy selectStrategy;

        public DbConfig() {
    
    
            this.idType = IdType.ASSIGN_ID;
            this.tableUnderline = true;
            this.capitalMode = false;
            this.logicDeleteValue = "1";
            this.logicNotDeleteValue = "0";
            this.insertStrategy = FieldStrategy.NOT_NULL;
            this.updateStrategy = FieldStrategy.NOT_NULL;
            this.selectStrategy = FieldStrategy.NOT_NULL;
        }

Конфигурация значения по умолчанию: NOT_NULL.

обновить конфигурацию политики

То есть, когда мы используем updateById()метод, мы используем стратегию по умолчанию, когда стратегия обновления не указана, для NOT_NULL,

То есть, когда поле объекта есть, NULLобновление набора производиться не будет, а если наше поле представляет собой пустую строку, то будет выполнена операция обновления набора.

not_emptyТаким образом, мы можем изменить нашу глобальную конфигурацию для обновления, когда она не пуста.

mybatis-plus.global-config.db-config.update-strategy=not_empty

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

/**
     * 用户类型
     */
    @TableField(value = "ADMIN_TYPE_ID",updateStrategy = FieldStrategy.NOT_EMPTY)
    private String userType;

или можно UpdateWrapperзаменить наupdateById

добавить политику

Точно так же мы используем стратегию по умолчанию, когда мы не указываем стратегию обновления, когда делаем или, inserдля ,saveNOT_NULL

То есть, когда поле объекта есть, NULLзначение ins не будет добавлено, если наше поле представляет собой пустую строку, значение будет добавлено.

Мы также можем указать другие стратегии для добавления

Supongo que te gusta

Origin blog.csdn.net/u011738045/article/details/120509332
Recomendado
Clasificación