SpringBoot整合Mybatis,TypeAliases配置失败的问题

摘要:
SpringBoot集成了Mybatis,TypeAliases无法配置。问题描述:应用MyBatis时,对象关系映射用于映射对象和别名。Mybatis文档中明确指出,如果没有明确定义实体类的别名,框架将自动使用ClassName作为别名。

SpringBoot整合Mybatis,TypeAliases配置失败的问题

问题描述

在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来。
在Mybatis的文档明确写出,如果你没有明确定义实体类的Aliase,框架会自动将Class Name自动
作为别名。

那么问题来了,当使用java -jar xxx.jar&启动的时候,会报出以下错误,

Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'XXXXX'.Cause: java.lang.ClassNotFoundException: Cannot find class: XXXXX

从异常信息来看,明显就是无法从本地检索到alise对应的类,并最终导致sqlSessionFactory等初始化
失败。而且吊轨的是,直接在Idea中启动是没有问题的,启动jar包才会出现这个问题

解决方法

参考博主A_Beaver的文章,原来mybatis的facroty需要加载SpringBoot独特的虚拟文件系统,才能识别类路径

public SpringBootVFS() {
    this.resourceResolver = new PathMatchingResourcePatternResolver(getClass().getClassLoader());
}

从以上代码看,其实是通过PathMatchingResourcePatternResolver实现资源的加载

修复该问题只需要在mybatis的配置类中,设置一下factory即可,

    @Bean(name = "masterSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setVfs(SpringBootVFS.class);//设置SpringBootVFS
        bean.setTypeAliasesPackage("com.fulan.domain.red");
        ...
    }

参考

完结!

免责声明:文章转载自《SpringBoot整合Mybatis,TypeAliases配置失败的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MINA、Netty、Twisted一起学(十一):SSL/TLSwince 基础技能 使用ini配置文件来保存信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mybatis批量foreach的使用

  最近在使用mybaits的过程中经常会碰到批量插入、更新的需求,经过查询资料和调试,现在总结如下(数据库mysql、oracle)   一、批量更新     1、oracle数据库 <update parameterType="list"> <foreach collection="list" item="item" index...

一步步学习SpringBoot(一) 快速搭建一个web

适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目. Spring Boot可以说是至少近5年来Spring乃至整个Java社区最有影响力的项目之一。Spring Boot主要包含以下特性:直接嵌入Tom...

mybatis 关联查询如何

关联查询: 有job表 和 recruitment表  ,job表有个recruitment_id 字段 与 recruitment 表关联 job表结构 recruitment 表结构:    Job.java @Data @Table(name = "t_job") public class Job{ /** * */...

在Spring中配置Hibernate事务

     本文主要探讨怎么用Spring来装配组件及其事务管理。在J2EE工程里连接到一个简单的数据库并不是什么难题,但是如果要综合组装企业类的组件就变得复杂了。一个简单的组件有一个或多个数据库支撑,所以,我们说到整合两个或多个的组件时,我们希望能够维持跨组件的许多数据库的运作的原子性。   J2EE提供了这些组件的容器,可以保证处理的原子性和独立性。在没...

mybatisplus使用

在mapper层创建StudentMapper接口并继承BaseMapper接口 MyBatis和Mybatis Plus的使用比较 MybatisPlus包含了Mybatis的所有功能,也就说在MybatisPlus中我们仍然可以按照Mybatis的方式来完成数据库的操作(无侵入)。 MybatisPlus的数据库操作的Mapper层的接口只需要继承B...

Spring框架第一天(搭建项目)

Spring框架 1.简介 1.1 Spring是什么 一个开源的框架,是JavaEE开源框架 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。 提供了展现层 Spring...