Mybatis注释如果值为null,如何返回哈希映射键项

时间:2018-07-27 09:48:15

标签: spring-boot mybatis spring-mybatis mybatis-generator

springboot mybatis示例:

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

如果表xx为空,则返回的映射不包含xx键。

我搜索了很长时间, mapper.xml可以配置<setting name="callSettersOnNulls" value="true"/> 可以解决我的问题,但是我不使用xml配置模式,如何使用mybatis注释配置参数callSettersOnNulls?

2 个答案:

答案 0 :(得分:0)

我说不, callSettersOnNulls 现在仅支持全局配置,它不支持特定方法

请参阅mybatis的源代码:

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

enter image description here

答案 1 :(得分:0)

我现在也遇到了同样的问题。我还没解决

回答问题,配置应该是这样的。

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);
            }
        };
    }
}