springboot 别名不起作用_springboot 打jar包 mybatis的别名失效

1、mybatis默认使用VFS,所以要自己重写改方法,如下

package com.jingbo.houtai.config;

import org.apache.ibatis.io.VFS;

import org.springframework.core.io.Resource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.IOException;

import java.net.URI;

import java.net.URL;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

/**

* Spring Boot集成MyBatis打包成jar时,找不到类的问题

* @author liufeng

*/

public class MySpringBootVFSextends VFS {

@Override

public boolean isValid() {

return true;

}

@Override

protected Listlist(URL url, String path)throws IOException {

ClassLoader cl =this.getClass().getClassLoader();

ResourcePatternResolver resolver =new PathMatchingResourcePatternResolver(cl);

Resource[] resources = resolver.getResources(path +"/**/*.class");

List resources1 = Arrays.asList(resources);

List resourcePaths =new ArrayList();

for (Resource resource: resources1) {

resourcePaths.add(preserveSubpackageName(resource.getURI(), path));

}

return resourcePaths;

}

private static StringpreserveSubpackageName(final URI uri, final String rootPath) {

final String uriStr = uri.toString();

final int start = uriStr.indexOf(rootPath);

return uriStr.substring(start, uriStr.length());

}

}

2、自定义sqlsessionFactory

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration

public class MybatisConfig {

@Bean(name ="sqlSessionFactory")

public SqlSessionFactoryclusterSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)

throws Exception {

final SqlSessionFactoryBean sessionFactory =new SqlSessionFactoryBean();

sessionFactory.setDataSource(dataSource);

sessionFactory.setMapperLocations(

new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*Mapper.xml"));

sessionFactory.setTypeAliasesPackage("com.jingbo.houtai.entity");

sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);

//MyBatis无法扫描Spring Boot别名的Bug 添加下面这行代码

sessionFactory.setVfs(MySpringBootVFS.class);

return sessionFactory.getObject();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值