好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

基于SpringBoot加载Mybatis的TypeAlias问题

SpringBoot加载Mybatis的TypeAlias

springboot打成jar之后再linux上运行会报找不到 type alias 对应的实体类的问题,这是springboot扫包的问题。

工程上默认使用的是Mybatis的DefaultVFS进行扫描,但是在springboot的环境下,Mybatis的DefaultVFS这个扫包会出现问题,所以只能修改VFS,为了清晰可见

直接贴代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@Bean

     public SqlSessionFactory sqlSessionFactoryBean() throws Exception {

         logger.info( "load SpringBootVFS" );

         //DefaultVFS在获取jar上存在问题,使用springboot只能修改

         VFS.addImplClass(SpringBootVFS. class );

         SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

         sqlSessionFactoryBean.setDataSource(dataSource());

         PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

         Resource[] resources1 = resolver.getResources( "classpath*:/mybatis/*.xml" );

         Resource[] resources2 = resolver.getResources( "classpath*:/mysql/mapper/*.xml" );

         Resource[] resources = (Resource[]) ArrayUtils.addAll(resources1,resources2);

         sqlSessionFactoryBean.setMapperLocations(resources);

         sqlSessionFactoryBean.setTypeAliasesPackage( "com.xxx.xx.entity" );

         return sqlSessionFactoryBean.getObject();

     }

springboot打包启动时报mybatis的typeAlias类名找不到的错误

springBoot项目在IDEA上面正常但是打包之后运行 出错,错误大致为mybatis解析Mapper.xml时 typeAlias找不到XX类

Mapper里面的标签:

?

1

< select parameterType = "XXClass" resultMap = "XXMap" >

这种写法在IDEA里面运行没问题 打包就有问题

正确写法:

?

1

< select parameterType = "cn.test.xxx.XXClass" resultMap = "XXMap" >

代码中的parameterType必须要用全路径才行 否则就出错。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/chenyao1994/article/details/88642243

查看更多关于基于SpringBoot加载Mybatis的TypeAlias问题的详细内容...

  阅读:12次