`
luckymjl2
  • 浏览: 16276 次
社区版块
存档分类
最新评论

mybatis3.2.2 sqlmap通配实现

阅读更多

每次都要往主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-src.rar"包含了完整的Mybatis 3.2.2版本的源代码,对开发者来说是一份宝贵的学习资源。 源码分析可以从以下几个主要方面展开: 1. **架构设计**:Mybatis 的核心组件包括...

    myBatis3.2.2带源码和文档

    `mybatis-3.2.2-sources.jar` 包含了MyBatis的源代码,开发者可以通过阅读源码了解MyBatis内部的工作原理,如SqlSession、Executor、Mapper接口等核心组件的实现,以及动态SQL的处理方式。这对于深入学习MyBatis,...

    myBatis3.2.2(含源码、文档)

    在标题"myBatis3.2.2(含源码、文档)"中,我们可以推断这是关于MyBatis框架的特定版本——3.2.2的资源包。这个版本可能包含了框架的源代码,这对于开发者来说非常有价值,因为通过查看源码,可以深入理解框架内部的...

    myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版

    myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版,可在myEclipse2013自带的Tomcat 7上运行,weblogic上可能有问题,有ModelMap 和ModelAndView的简单使用比较,ModelMap用起来更方便简洁。也使用到了c...

    mybatis-3.2.2版本的jar包和源码

    这个压缩包包含两个文件:`mybatis-3.2.2.jar`是MyBatis的运行时库,而`mybatis-3.2.2-sources.jar`包含了源代码,便于开发者深入理解框架内部工作原理。 首先,`mybatis-3.2.2.jar`是核心库,包含了MyBatis的主要...

    MyBatis3.2.2中文官方文档

    MyBatis是一款优秀的持久层框架,支持普通的SQL查询、存储过程和高级映射。它将手动的JDBC代码、参数设置以及结果集检索减少到最少,通过简单的XML或注解配置,将接口和Java的POJO(普通的Java对象)映射成数据库中...

    mybatis 3.2.2 中文用户指南

    MyBatis支持多种数据库厂商,因为它具有多数据库支持的能力,并且允许用户通过插件的形式实现动态SQL的脚本语言扩展。MyBatis的Java API为应用程序与MyBatis之间的交互提供了接口,包括SqlSessions和...

    myBatis3.2.2.jar

    myBatis3.2.2.jar

    mybatis-3.2.2-javadoc.jar

    想要学习mybatis 3.2.2 源代码的童鞋可以下载去看看

    springmvc3.2.2+mybatis3.2.2

    1、压缩包是一个 springmvc3.2.2 框架+mybatis3.2.2数据库操作层 的Eclipse工程 2、解压工程 修改数据库配置文件【dbConfig.xml】 编译 部署 发布 在本地或其他机器建一个表名为devType的两个字段的表,详情看映射...

    mybatis3.2.2官网文档.zip

    mybatis3.2.2官网文档。自从Mybatis转移到GitHub之后就出现了官方文档在网页上很难打开的情况,严重阻碍了学习Mybatis的进程。这是本人找到的Mybatis3.2.2的PDF文档,亲测有效,免费下载。

    mybatis-3.2.2.jar

    ------------------------- ------------------------ mybatis-3.2.2.jar --------------------------- ------------------------

    mybatis-3.2.2 jar包

    在本主题中,我们将深入探讨MyBatis 3.2.2版本的关键特性、使用方法以及它如何优化数据库操作。 首先,MyBatis的核心概念是SQL映射,它将SQL语句与Java代码分离,使得代码更加整洁且易于维护。在3.2.2版本中,XML...

    mybatis-3.2.2 jar包和pdf文档

    这次我们讨论的是MyBatis的3.2.2版本。 MyBatis 3.2.2 是该框架的一个稳定版本,它在前一版本的基础上进行了一些优化和改进,旨在提高性能和易用性。这个版本包含了核心的MyBatis库(即mybatis-3.2.2.jar)和相关的...

    MyBatis3.2.2 用户手册中文翻译版

    MyBatis3.2.2 版本是其中的一个稳定版本,提供了大量特性来支持开发者更高效地处理数据库操作。 ### MyBatis 介绍 MyBatis 支持普通 SQL 查询、存储过程以及高级映射,它通过简单的 XML 或注解配置,结合原始的 ...

    mybatis 3.2.2源码和jar包

    对于`mybatis-3.2.2.src.zip`,这是MyBatis 3.2.2版本的源代码。通过分析源代码,我们可以深入了解MyBatis的工作原理: 1. **SqlSessionFactoryBuilder**:它是创建SqlSessionFactory的入口,通常在应用初始化时...

    Mybatis 3.2.2 + Spring MVC 3.2

    标题 "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-src-3.2.2.zip压缩包中,包含了MyBatis 3.2.2版本的源码。这个版本的源码对于学习MyBatis的内部工作原理和开发自定义插件非常有帮助。以下是一些关于MyBatis 3.2.2版本的关键知识点: 1. **...

Global site tag (gtag.js) - Google Analytics