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
    评论
在使用Spring Boot集成MyBatis时,连接SQL Server 数据库时,可能会出现“err_connection_refused”的异常。这个异常通常是由于网络或数据库连接出现问题导致的,具体的原因可能有很多。 首先,我们可以检查一下网络连接是否可用。确认网络还是工作正常,并且确保在连接时输入的数据库地址和端口号是正确的。特别是如果数据库运行在远程服务器上,还需要确认是否设置了正确的访问权限。 可以通过尝试使用其他SQL Server的连接方式,比如通过命令行客户端(SQL Server Management Studio)来测试数据库是否可以正常连接。如果数据库能够正常连接,则可以考虑检查 JDBC 驱动程序是否正确配置。 在使用MyBatis时,还需要考虑数据库的驱动程序和配置。在pom.xml文件中添加相应的依赖项并配置datasource,确保datasource的属性与所使用的SQL Server版本和配置相匹配。 如果以上步骤仍然无法解决问题,我们可以检查一下数据库日志,查看是否有相关的错误或警告。数据库日志可以提供更详细的信息,以便更好地定位问题。此外,还可以尝试简化数据库连接池配置,例如将其缩小到最小值,检查数据库连接数是否过多或是否达到了最大连接数。 在MyBatis集成Spring Boot时,还可以尝试使用Spring Boot Starter集成MyBatis,它可以自动地为我们配置数据库。注意,此时需要保证配置文件中的相关属性与本地的数据库配置相匹配。 总之,当Spring Boot集成MyBatis连接SQL Server时,我们需要仔细排查异常的原因。通过上述方法,我们可以逐步进行问题定位并解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值