zoukankan      html  css  js  c++  java
  • SpringBoot整合Mybatis,TypeAliases配置失败的问题

    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");
            ...
        }
    

    参考

    完结!

  • 相关阅读:
    HTTP协议:POST请求
    HTTP协议:GET请求
    HTTP协议
    理解server.xml
    用session实现简单的购物
    session:的工作原理
    session:的生命周期
    session:例子代码(一个session为一个会话而服务)
    session概述&作用
    时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/Franken-Fran/p/mybatis_typeAliase_error.html
Copyright © 2011-2022 走看看