在配置数据源的配置文件中,配置Mybatis的SqlSessionFactoryBean
一. map的key值 与select的字段顺序的不一致问题
解决方法:resultType="map" 修改为 resultType="java.util.LinkedHashMap"
二.值为null的返回map中没相应的key
解决方法:1.查询字段使用ifnull函数(可空字段较多时,不推荐)
2.修改mybatis配置
springmvc:
创建mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 当返回数据类型为map,设置callSettersOnNulls会把值为null的key也返回 -->
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/META-INF/spring/mybatis-config.xml" />
<property name="mapperLocations">
<array>
<value>classpath*:/com/xxx/mapper/*.xml</value>
</array>
</property>
</bean>
springboot:
配置文件:mybatis.configuration.call-setters-on-nulls=true
注解方式:
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis 注解版
*
*/
@Configuration
public class MybatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则
configuration.setCallSettersOnNulls(true);
}
};
}
}