产生错误原因有以下2种原因
第一种是在yml中配置以下
mybatis: mapper-locations: classpath:mapper/xxx/*.xml
type-aliases-package: com.xxx.entity
配置好后如果使用的是springboot
@Bean(name = "subTemSqlSessionFactory")
@Primary
public SqlSessionFactory subTemSqlSessionFactory(@Qualifier("subTemDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/xxx/*.xml"));
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
sqlSessionFactoryBean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
return sqlSessionFactoryBean.getObject();
}
要配置以下3行代码,才能配spring扫描到,否则不生效报错Could not resolve type alias ‘xxx’
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/xxx/*.xml")); sqlSessionFactoryBean.setVfs(SpringBootVFS.class); sqlSessionFactoryBean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
第二种 是采用mybatis-config.xml
mybatis: mapper-locations: classpath:mapper/xxx/*.xml
config-location: classpath: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>
<setting name="cacheEnabled" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<typeAliases>
<package name="com.xxx.entity"/>
</typeAliases>
</configuration>
同以上的代码
需要将 sqlSessionFactoryBean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
替换为 sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
因为现在yml里面是config-location: classpath:mybatis-config.xml
所以要换成相应的代码