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

    参考

    完结!

  • 相关阅读:
    nop调试-区域路由问题
    nop4.3 用户权限管理
    nop4.3 admin中添加新菜单
    nop 中创建任务(Task)
    SignalR 的应用
    mvc和ef如何连接
    .net中微信、支付宝回调
    C# 中使用Aspose.Words下载文档
    添加 Azure Active Directory 服务,调用方法
    Net Core 5.0 部署IIS错误-500.31-Failed to load ASP.NET Core runtime
  • 原文地址:https://www.cnblogs.com/Franken-Fran/p/mybatis_typeAliase_error.html
Copyright © 2011-2022 走看看