动手改造Ibatis,使其支持文件系统存储数据列 之 源码下载编译和SqlMapConfig解析

本文接上文

http://www.cnblogs.com/suyuan/archive/2009/04/16/1437360.html

从本篇文章开始我将逐步讲解如果通过修改Ibatis源代码实现上述功能,而本篇先介绍Ibatis下载,编译和sqlmapconfig的解析.此处我们使用的是java版本,.net版本请参考本版本.

下载:

Ibatis的官方网站http://ibatis.apache.org/

你可以通过官方网站下载最新的Ibatis源代码.

官方提供的源码中是不含依赖包的.仅仅提供了一份依赖包清单,并且还没有列全.同时官方给的清单中个别包已经升级而老版本下载已经不再提供,我们尽量找和官方提供清单中最接近的版本.否则可能会造成编译不通过.

如果你觉得麻烦,我这里提供了官方所列清单中的依赖包

  /Files/suyuan/IbatisNeedlib.rar

下载源代码,并且附加了依赖包后,请注意,ibatis是在jdk1.5环境下面编译的通过,如果你选择的是jdk1.6,请更改设置,否则编译错误.

 

下面开始动刀了,呵呵

 

上篇文章中,我们已经介绍了要在sqlmaperconfig文件中增加一个节点

<BaseDirectory resource=”d:/ibatis/”/>

这个节点的作用就是指定文件系统存储根路径.

Ibatis初始化的时候会根据sql-map-2.dtd sql-map-config-2.dtd 验证xml文件是否正确,如果我们之间在sqlmaperconfig 中增加该节点就会初始化出错.

首先我们修改sql-map-config-2.dtd文件

然后还要定义这个节点

完成上面的操作后,xml中增加我们配置的节点 就不会初始化出错了.


仅仅配置完成后,并不起作用,因为还没有解析,还要增加解析的部分.

Ibatis xml的解析 都放在这个package com.ibatis.sqlmap.engine.builder.xml 下面

此处对于sqlmapconfig 解析的类对应的是 SqlMapConfigParser

我们只需要在这个类中增加下面一个方法,并且把这个方法放到 SqlMapConfigParser的构造方法中就可以了.

将这个方法放到构造方法中 其实就是NodeletParser中增加了一个node的处理方法.

 

注意 这句代码

就是把我们解析到的值赋给了一个对象的一个属性.而这个对象就是SqlMapExecutorDelegate,就是说,我们需要在这个对象中增加一个属性是

private String baseDirectory; SqlMapExecutorDelegate 仿佛一个大管家,一样,以后的改造中,我们会多次使用到该对象.

这里假如我们没有在配置文件中 配置 BaseDirectory 节点, 则默认使用当前目录

baseDirectory = System.getProperty("user.dir");

 

 

ok,到现在对于 我们就成功了增加了 BaseDirectory 节点了, 这个配置路径会和以后生成的hash路径组合成我们的文件存储路径.

 

本文到此结束,其余部分将在下文讲解

posted @ 2009-04-17 15:43  雨中漫步的太阳  阅读(2326)  评论(3编辑  收藏  举报