文档章节

spring扫描mybatis包,并配置别名

顽-石
 顽-石
发布于 2017/06/08 08:31
字数 197
阅读 13
收藏 0
package com.zvan.eecp.common;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.util.ClassUtils;
/**
 * 重写mybatis 别名扫描,添加通配符扫描功能
 */
public class TQSqlSessionFactoryBean extends SqlSessionFactoryBean{
	 Logger logger = Logger.getLogger(TQSqlSessionFactoryBean.class);
	 static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; 
	  @Override  
	    public void setTypeAliasesPackage(String typeAliasesPackage) {  
	        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();  
	        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);  
	        typeAliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +  
	                ClassUtils.convertClassNameToResourcePath(typeAliasesPackage) + "/" + DEFAULT_RESOURCE_PATTERN;  
	  
	        //将加载多个绝对匹配的所有Resource  
	        //将首先通过ClassLoader.getResource("META-INF")加载非模式路径部分  
	        //然后进行遍历模式匹配  
	        try {  
	            List<String> result = new ArrayList<String>();  
	            Resource[] resources =  resolver.getResources(typeAliasesPackage);  
	            if(resources != null && resources.length > 0){  
	                MetadataReader metadataReader = null;  
	                for(Resource resource : resources){  
	                    if(resource.isReadable()){  
	                       metadataReader =  metadataReaderFactory.getMetadataReader(resource);  
	                        try {  
	                            result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());  
	                        } catch (ClassNotFoundException e) {  
	                            e.printStackTrace();  
	                        }  
	                    }  
	                }  
	            }  
	            if(result.size() > 0) {  
	                super.setTypeAliasesPackage(String.join(",", result));  
	            }else{  
	                logger.warn("参数typeAliasesPackage:"+typeAliasesPackage+",未找到任何包");  
	            }  
	            //logger.info("d");  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
	    }  
	  
}

© 著作权归作者所有

下一篇: 数字校验
顽-石

顽-石

粉丝 0
博文 6
码字总数 714
作品 0
内江
程序员
私信 提问
Springboot 中 Mybatis 的使用

官方文档: Mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter 方便使用。 要使用MyBatis-Spring-Boot-Starter模块,只需要在类路径中包含 mybatis-spring-boot-autoconfig...

不开心时不要学习
2018/01/19
2.9K
0
SpringMVC4 + Spring + MyBatis3 【转】

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建。 1. web.xml 我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在w...

梵蒂冈考虑过
2016/10/24
81
1
SpringMVC4 + Spring + MyBatis3 【转】

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建。 1. web.xml 我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在w...

如何让他和
2016/10/04
26
0
SpringMVC4 + Spring + MyBatis3

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建。 1. web.xml 我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在w...

梵蒂冈考虑过
2016/08/17
91
1
SpringMVC4 + Spring + MyBatis3 【转】

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建。 1. web.xml 我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在w...

梵蒂冈考虑过
2016/11/04
101
1

没有更多内容

加载失败,请刷新页面

加载更多

009、Linux 文件权限管理

Linux 文件权限管理

北岩
30分钟前
5
0
Kafka学习笔记(三)—Kafka消息丢失,消费重复

一、数据传输事务的定义 最多一次(at most once):消息不会被重复发送,但是可能丢失 最少一次 (at least once)消息可能会被重复发送,但是不会漏发送 精确一次(exactly once) 不会少发...

Algoric
34分钟前
6
0
ajax设置请求头部时遇到的问题

w3c规定 当请求的header包含以下字段时 会被zhong'zhi Accept-Charset Accept-Encoding Connection Content-Length Cookie Cookie2 Content-Transfer-Encoding Date Expect Host Keep-Alive......

Bing309
58分钟前
5
0
总结:Linux

一、目录 目录 作用 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,...

浮躁的码农
今天
4
0
什么是 happens-before 原则?

Java 中 happens-before 原则,是在 JSR-133 中提出的。 原文摘要: • Each action in a thread happens-before every subsequent action in that thread. • An unlock on a monitor happe......

ConstXiong
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部