1

问题:ibatis.type.TypeException: Could not resolve type alias
spring-boot jar包启动异常,idea启动没有任何问题

clipboard.png

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);

林胖
61 声望0 粉丝

测试开发工程师