<?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"> 
<!-- 
	如果内网机器报错,请使用下面这种笨办法
 -->
<!-- 
<!DOCTYPE configuration
        PUBLIC "-//www.mybatis.org//DTD Config 3.0//EN"
        "E:/bao/tomcat/apache-tomcat-6.0.14/webapps/pmsys/WEB-INF/classes/mybatis/mybatis-3-config.dtd">
 -->
<configuration>
	<settings>
	  <!-- 只设置需要的,其他使用默认值 -->
	  <!-- 开启缓存,默认就是开启的,2层开关,需要在Mapper文件中也指定 cache 标签才会真正使用缓存 -->
	  <setting name="cacheEnabled" value="true"/>
	  <!-- 在null时也调用 setter,适应于返回Map,3.2版本以上可用 -->
	    <setting name="callSettersOnNulls" value="true"/>
	</settings>
</configuration>public class SqlSessionFactoryBean 
    implements FactoryBean<SqlSessionFactory>, InitializingBean, 
    ApplicationListener<ApplicationEvent> {
  private static final Log logger = LogFactory.getLog(SqlSessionFactoryBean.class);
  // 这里可以配置configLocation资源
  private Resource configLocation;
  private Resource[] mapperLocations;
  private DataSource dataSource;
  private TransactionFactory transactionFactory;
  // 这里可以配置configurationProperties属性
  private Properties configurationProperties;
  ......
  protected SqlSessionFactory buildSqlSessionFactory() throws IOException {
    Configuration configuration;
    XMLConfigBuilder xmlConfigBuilder = null;
    // 先查找 configLocation 属性
    if (this.configLocation != null) {
      xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configurationProperties);
      configuration = xmlConfigBuilder.getConfiguration();
    } else {
      if (logger.isDebugEnabled()) {
        logger.debug("Property ‘configLocation‘ not specified, using default MyBatis Configuration");
      }
      // 如果找不到configLocation,就只使用 configurationProperties
      configuration = new Configuration();
      configuration.setVariables(this.configurationProperties);
    }
    ......<!-- myBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 表示在mybatis.mapping包或以下所有目录中,以 Mapper.xml结尾所有文件 --> <property name="mapperLocations"> <value>classpath:com/cncounter/dao/oracle/**/*Mapper.xml</value> <!-- <list> <value>classpath:com/cncounter/dao/oracle/res/*Mapper.xml</value> <value>classpath:com/cncounter/dao/oracle/user/*Mapper.xml</value> </list> --> </property> <!-- <property name="configLocation"> <value>classpath:mybatis/mybatis-env-setting.xml</value> </property> --> <!-- 切换一种方式,不配置configLocation --> <property name="configurationProperties"> <props> <prop key="cacheEnabled">true</prop> <prop key="callSettersOnNulls">true</prop> </props> </property> </bean>
MyBatis与Spring设置callSettersOnNulls
原文:http://blog.csdn.net/renfufei/article/details/39646207