问题:ibatis.type.TypeException: Could not resolve type alias
spring-boot jar包启动异常,idea启动没有任何问题
pom信息:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
配置信息如下:
<?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="lazyLoadingEnabled" value="false" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="autoMappingBehavior" value="FULL" />
<!-- <setting name="autoMappingUnknownColumnBehavior" value="WARNING" /> -->
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="2500" />
<!-- <setting name="defaultFetchSize" value="100" /> -->
<setting name="safeRowBoundsEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="localCacheScope" value="SESSION" />
<setting name="jdbcTypeForNull" value="OTHER" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
<setting name="logImpl" value="SLF4J"/>
</settings>
<typeAliases>
<package name="com.xx.xx.view"/>
</typeAliases>
</configuration>
sqlmap如下:
<select id="findRegressionReportbyTaskId" parameterType="ReportView" resultType="ReportView">
Select * from xxx_report a where a.task_id =#{taskId} and is_delete is null Group by
a.project_name Order by a.case_id
</select>
问题分析:
首先用法应该没毛病,在之前的项目中有过类似的用法。其次检查文件是否齐全,xml,mapper都有,排除是文件没找到导致的报错。最后怀疑可能是mybatis升级之后的逻辑有所改动,所以看了github的一些issue愉快的找到了答案。
结果描述:
github:issue
主要的问题是扫描alias的时候异常了,通过增加配置,确保alias package被找到即可。
pom文件移除原有的mybatis、mybatis-spring依赖,增加mybatis-spring-boot-starter这个依赖(包含了前面两个被移除的mybatis依赖)
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
sqlSessionFactory生成的时候,设置一下VFS文件,即可解决问题。
SqlSessionFactoryBean fb = new SqlSessionFactoryBean();
fb.setDataSource(dataSource);
fb.setVfs(SpringBootVFS.class);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。