mybaits使用经验(1)

Mybatis是很不错的持久层框架,但是如果业务需要返回值不为一个model,而是用map接收的话,如果查出的结果中某一项的值为null,那么它就不会在map中出现。解决方案有两种:
使用Mybatis config配置,本配置适用于MyBatis3.2以上。。。
1.创建configuration.xml:
2.内容如下:



<configuration>
  <settings>
      <setting name="callSettersOnNulls" value="true"/>
  settings>
configuration>

3.配置sqlSessionFactory时:

id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:/configuration.xml" />
    <property name="mapperLocations"
    value="classpath:/mapping/*.xml" />

如果是使用springboot时,第二相同,需要在

@Bean
    public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapping/*.xml"));
        sqlSessionFactoryBean.setConfigLocation(resolver.getResource("classpath:/configuration.xml"));
        return sqlSessionFactoryBean.getObject();
    }

此方法可以解决返回值为map时的空值问题。
也可以使用ifnull(xx,”“) as xx的解决方式来解决返回值为空的问题,这个种方法可以设置默认的返回值。

你可能感兴趣的:(开发最佳实践)