每次都要往主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了
相关推荐
myBatis3.2.2带源码和文档
MyBatis3.2.2中文官方文档,快速带你走进mybatis,对于初学者有很大帮助
myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版,可在myEclipse2013自带的Tomcat 7上运行,weblogic上可能有问题,有ModelMap 和ModelAndView的简单使用比较,ModelMap用起来更方便简洁。也使用到了c...
myBatis3.2.2(含源码、文档),想要设置免费怎么无法设置呢
源码下载!绝对的mybatis源码,在Myeclipes或Eclipse中直接引入即可看源码!
myBatis3.2.2.jar
想要学习mybatis 3.2.2 源代码的童鞋可以下载去看看
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 ...
1、压缩包是一个 springmvc3.2.2 框架+mybatis3.2.2数据库操作层 的Eclipse工程 2、解压工程 修改数据库配置文件【dbConfig.xml】 编译 部署 发布 在本地或其他机器建一个表名为devType的两个字段的表,详情看映射...
MyBatis3.2.2 官方文档, 用户手册 内有mybatis的详细使用说明。 已翻译为中文,易于理解
包含mybatis-3.2.2版本的jar包和源码,可以直接导包,欢迎有需要的猿们下载!
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 jar包
mybatis3.2.2源码文件,欢迎大家下载!!!!!!!!!
完整的MyBatis3.2.2连接MySQL数据库示例代码,包含增删改查及测试方法代码,可以下载学习,初学者也能轻松上手。
最新MyBatis教学视频,视频包含:MyBatis配置文件编写,MyBatis动态SQL,MyBatis缓存机制,MyBatis-Spring整合,MyBatis逆向工程,MyBatis高级内容
需要使用的Jar包:mybatis 3 2 2 jar(mybatis核心包) mybatis spring 1 2 1 jar 与Spring结合包