Аннотация Mybatis, как вернуть ключевой элемент hashmap, если значение равно null

Пример Springboot Mybatis:

@Select({"select id,xx from table where id=#{id}"})
Map<String,Object> queryById(@Param("id") Long id);

если таблица xx имеет значение null, возвращаемая карта не содержит ключа xx.

Я долго ищу, mapper.xml мог бы настроить <setting name="callSettersOnNulls" value="true"/> , мог бы решить мою проблему, но я не использую режим конфигурации xml, как настроить параметр callSettersOnNulls с помощью аннотации mybatis ??


person Jim Green    schedule 27.07.2018    source источник


Ответы (2)


я говорю нет, callSettersOnNulls теперь поддерживает только глобальную конфигурацию, он не может поддерживать определенный метод

см. исходный код mybatis:

org.apache.ibatis.executor.resultset.DefaultResultSetHandler
applyPropertyMappings() or applyAutomaticMappings()

введите здесь описание изображения

person clevertension    schedule 14.08.2018

У меня была такая же проблема прямо сейчас. я еще не решаю

Отвечая на вопрос, конфигурация будет примерно такой.

import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisConfiguration {

    @Bean
    ConfigurationCustomizer mybatisConfigurationCustomizer() {
        return new ConfigurationCustomizer() {

            @Override
            public void customize(org.apache.ibatis.session.Configuration configuration) {
                configuration.setCallSettersOnNulls(true);
            }
        };
    }
}
person silanpa    schedule 29.12.2020
comment
Это ответ или нет? В первом предложении сказано, что нет, а во втором — что да. Пожалуйста, отредактируйте ответ, чтобы уточнить. - person RichG; 30.12.2020