网站大量收购独家精品文档,联系QQ:2885784924

动手改造Ibatis,使其支持文件系统存储数据列之看我如何给ResultMap增加属性--.doc

动手改造Ibatis,使其支持文件系统存储数据列之看我如何给ResultMap增加属性--.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动手改造Ibatis,使其支持文件系统存储数据列之看我如何给ResultMap增加属性--.doc

  动手改造Ibatis,使其支持文件系统存储数据列之看我如何给ResultMap增加属性   这篇文章我要介绍的是给rusultMap的xml段中增加节点,具体效果如下:   图片看不清楚?请点击这里查看原图(大图)。   或许你会问为什么要这样做?   首先我来说说key ,key的作用是指定用于生成hash路径所依赖的对象属性.这里要注意的是你指定的这个属性的值必须是唯一的. 而数据库中的id作为主键必须是唯一值,所以我们一般以 id 来生成我们所需的hash路径.   然后来说明下 datasource ,这里的datasource可以有两个选择 file 或者 db 如果是选择file的话 则对应列根据hash路径存储在文件系统中,如果选择db 则存储在数据库中 ,默认是db 可以省略.   明白了以上添加的节点的作用 ,接下来我们来一步步修改程序使之达到我们的目标:   第一步,修改dtd验证文件:      这里必须修改 我在上一篇已经介绍过了,这里不再过多解释.请参考上图.   对SqlMap 进行解析是通过.ibatis.sqlmap.engine.builder.xml.SqlMapParser.java 进行的,这里要说明的是由于我们并没有增加新的node,而是仅仅增加了属性,所以我们仅仅在原有的解析的方法上增加对属性的解析就好了 parser.addNodelet(/sqlMap/resultMap, neespace(attributes.getProperty(id));     String resultClassName = attributes.getProperty(class);     String extended = state.applyNamespace(attributes.getProperty(extends));     String xmlName = attributes.getProperty(xmlName);     String groupBy = attributes.getProperty(groupBy);     //解析key     String key = attributes.getProperty(key);             resultClassName = state.getConfig().getTypeHandlerFactory().resolveAlias(resultClassName);     Class resultClass;     try {      state.getConfig().getErrorContext().setMoreInfo(Check the result class.);      resultClass = Resources.classForName(resultClassName);     } catch (Exception e) {      throeException(Error configuring Result. Could not set ResultClass. Cause:  + e, e);     }     ResultMapConfig resultConf = state                    .getConfig()                    .nelName,key);     state.setResultConfig(resultConf);    }   });   注意代码的最后调用了 neapConfig ,这个也要增加key,像一串,我们只要根据程序一步步跟下去逐步增加key就ok了   当我们跟到下面这个地方的时候key必须有一个归宿,他的归宿就是ResultMap对象   请看下图: 123下一页 这篇文章来自..,。   图片看不清楚?请点击这里查看原图(大图)。   然后我们跳转到ResultMap类,继续看   这里我在ResultMap类中增加了三个属性,key就不用解释了 ,   filehandlerpath其实就是指我一直在说的hash路径.下图展示了生成hash路径的方式.  //生成hash路径  public void setFilehandlerpath(Object key) {  if(key!=null)  {  filehandlerpath = delegate.getBaseDirectory() + this.resultClass.getSimpleName();  String hashk

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档