每次都要往主SqlMapConfig的 <mappers></mappers>添加sqlmap的路径,感觉非常繁琐(不觉得繁琐的人除外)。于是我希望能够想spring一样通配路径实现这样的效果:
<mappers>
<mapper resource="cn/com/xxxx/**/sqlmap_*_yw.xml" />
</mappers>
当然这样的条件是命名规范(满足自己的命名规范就行)。比如这个会扫描所有cn/com/xxxx/**/sqlmap_*_yw.xml这种格式的sqlmap.xml
本来想通过spring的aop实现,不过没成,于是我只能修改源码了。如果有更好的方案的朋友可以告诉我,谢谢。
找到org.apache.ibatis.builder.xml.XMLConfigBuilder.class反编后发现:private void parseConfiguration(XNode root) 为SqlMapConfig.xml的解析入口。但是由于是private方法,所以我不得不通过修改源码实现功能。如果想通过通过反射的话就算了,得不偿失。
private void parseConfiguration(XNode root) {
try {
propertiesElement(root.evalNode("properties")); //issue #117 read properties first
typeAliasesElement(root.evalNode("typeAliases"));
pluginElement(root.evalNode("plugins"));
objectFactoryElement(root.evalNode("objectFactory"));
objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
settingsElement(root.evalNode("settings"));
environmentsElement(root.evalNode("environments")); // read it after objectFactory and objectWrapperFactory issue #631
databaseIdProviderElement(root.evalNode("databaseIdProvider"));
typeHandlerElement(root.evalNode("typeHandlers"));
XNode xNode=parasMmappers(root.evalNode("mappers"));
mapperElement(xNode);
} catch (Exception e) {
throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
}
}
private XNode parasMmappers(XNode root){
List<String> resourceList=new ArrayList<String>();
ResourceLoader resourceLoader=new PathMatchingResourcePatternResolver();
Resource[] a_resource;
List<XNode> xNodeList=root.getChildren();
String resource;
String filePath;
try {
for (XNode item : xNodeList) {
resource = item.getStringAttribute("resource");
a_resource = ((ResourcePatternResolver) resourceLoader).getResources(resource);
for (Resource res:a_resource) {
res.getURI();
filePath=res.getFile().toString();
filePath=filePath.substring(filePath.indexOf("classes")+8);
if(resourceList.indexOf(filePath)==-1){
resourceList.add(filePath);
}
}
}
} catch (IOException e) {
log.error(e);
}
StringBuffer xmlBuff = new StringBuffer();
xmlBuff.append("<mappers>");
if (resourceList.size() > 0) {
for (String res : resourceList) {
xmlBuff.append("<mapper resource=\"");
xmlBuff.append(res);
xmlBuff.append("\" />");
}
}
xmlBuff.append("</mappers>");
XPathParser xPathParser = new XPathParser(xmlBuff.toString());
Node node = xPathParser.evalNode("mappers").getNode();
XNode xNode = new XNode(xPathParser,node , null);
return xNode;
}
红色为修改和添加部分。
附上附件。自己编译后根据包路径, 继续放入mybatis-3.2.2.jar就OK了
相关推荐
这个源码包"mybatis-3.2.2-src.rar"包含了完整的Mybatis 3.2.2版本的源代码,对开发者来说是一份宝贵的学习资源。 源码分析可以从以下几个主要方面展开: 1. **架构设计**:Mybatis 的核心组件包括...
`mybatis-3.2.2-sources.jar` 包含了MyBatis的源代码,开发者可以通过阅读源码了解MyBatis内部的工作原理,如SqlSession、Executor、Mapper接口等核心组件的实现,以及动态SQL的处理方式。这对于深入学习MyBatis,...
在标题"myBatis3.2.2(含源码、文档)"中,我们可以推断这是关于MyBatis框架的特定版本——3.2.2的资源包。这个版本可能包含了框架的源代码,这对于开发者来说非常有价值,因为通过查看源码,可以深入理解框架内部的...
myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版,可在myEclipse2013自带的Tomcat 7上运行,weblogic上可能有问题,有ModelMap 和ModelAndView的简单使用比较,ModelMap用起来更方便简洁。也使用到了c...
这个压缩包包含两个文件:`mybatis-3.2.2.jar`是MyBatis的运行时库,而`mybatis-3.2.2-sources.jar`包含了源代码,便于开发者深入理解框架内部工作原理。 首先,`mybatis-3.2.2.jar`是核心库,包含了MyBatis的主要...
MyBatis是一款优秀的持久层框架,支持普通的SQL查询、存储过程和高级映射。它将手动的JDBC代码、参数设置以及结果集检索减少到最少,通过简单的XML或注解配置,将接口和Java的POJO(普通的Java对象)映射成数据库中...
MyBatis支持多种数据库厂商,因为它具有多数据库支持的能力,并且允许用户通过插件的形式实现动态SQL的脚本语言扩展。MyBatis的Java API为应用程序与MyBatis之间的交互提供了接口,包括SqlSessions和...
myBatis3.2.2.jar
想要学习mybatis 3.2.2 源代码的童鞋可以下载去看看
1、压缩包是一个 springmvc3.2.2 框架+mybatis3.2.2数据库操作层 的Eclipse工程 2、解压工程 修改数据库配置文件【dbConfig.xml】 编译 部署 发布 在本地或其他机器建一个表名为devType的两个字段的表,详情看映射...
mybatis3.2.2官网文档。自从Mybatis转移到GitHub之后就出现了官方文档在网页上很难打开的情况,严重阻碍了学习Mybatis的进程。这是本人找到的Mybatis3.2.2的PDF文档,亲测有效,免费下载。
------------------------- ------------------------ mybatis-3.2.2.jar --------------------------- ------------------------
在本主题中,我们将深入探讨MyBatis 3.2.2版本的关键特性、使用方法以及它如何优化数据库操作。 首先,MyBatis的核心概念是SQL映射,它将SQL语句与Java代码分离,使得代码更加整洁且易于维护。在3.2.2版本中,XML...
这次我们讨论的是MyBatis的3.2.2版本。 MyBatis 3.2.2 是该框架的一个稳定版本,它在前一版本的基础上进行了一些优化和改进,旨在提高性能和易用性。这个版本包含了核心的MyBatis库(即mybatis-3.2.2.jar)和相关的...
MyBatis3.2.2 版本是其中的一个稳定版本,提供了大量特性来支持开发者更高效地处理数据库操作。 ### MyBatis 介绍 MyBatis 支持普通 SQL 查询、存储过程以及高级映射,它通过简单的 XML 或注解配置,结合原始的 ...
对于`mybatis-3.2.2.src.zip`,这是MyBatis 3.2.2版本的源代码。通过分析源代码,我们可以深入了解MyBatis的工作原理: 1. **SqlSessionFactoryBuilder**:它是创建SqlSessionFactory的入口,通常在应用初始化时...
标题 "Mybatis 3.2.2 + Spring MVC 3.2" 描述了一个整合了Mybatis和Spring MVC两个框架的项目,版本分别为3.2.2和3.2。这个项目应该是一个简单的Web应用程序,它允许开发者通过Spring MVC处理前端请求,并利用...
在mybatis-src-3.2.2.zip压缩包中,包含了MyBatis 3.2.2版本的源码。这个版本的源码对于学习MyBatis的内部工作原理和开发自定义插件非常有帮助。以下是一些关于MyBatis 3.2.2版本的关键知识点: 1. **...