版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82732095
SpringBoot通过jar包启动时MyBatis无法定位实体类
SpringBoot 通过 jar 包启动项目时,MyBatis 无法定位实体类,但通过 IDE 启动时没问题
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
出现问题的原因
- 通过 jar 启动时,MyBatis 内部获得的路径不同,会导致无法根据配置文件指定的路径扫描到实体类
- 项目不是通过自动注入方式配置 MyBatis ,而是通过手动注入
解决办法
- 在手动注入并指定实体类扫描路径之前,将 Spring 已经实例化的 VFS 提前指定
@Bean
@ConditionalOnMissingBean(SqlSessionFactoryBean.class)
public SqlSessionFactory sqlSessionFactory(@Qualifier("druidDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
// 指定VFS确保可以扫描到实体类
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
return sqlSessionFactoryBean.getObject();
}