J2EE核心:iBatis DAO入门与进阶一(2)

分类: J2EE   出处:iocblog整理  更新时间:2008-12-16   添加到收藏  

4.        建立一个sqlmapcontactdao.java文件,如下

清单3:

public class sqlmapcontactdao extends
 sqlmapdaotemplate implements contactdao {
  public sqlmapcontactdao(daomanager arg0) {
      super(arg0);
  }
  public int deletecontact(int contactid) {
    return super.delete("deletecontact",
    new integer(contactid));
  }
  public int insertcontact(contact contact) {
    integer contactid =(integer)super.insert
      ("insertcontact",contact);
    return contact.getcontactid();
  }
  public contact selectcontact(int contactid) {
    return (contact)super.queryforobject("getcontact",
      new integer(contactid));
  }
  public int updatecontact(contact contact) {
    return super.update("updatecontact",contact);
  }
}

 

sqlmapcontactdao是contactdao接口的具体实现,它用sql maps作为存储管理机制。注意到我们并没有写任何代码来或者初始化sql maps,或得到一个连接,或者在类中标注一个事务的界限。相反,我们继承sqlmapdaotemplate.java类,它帮我们处理下层的、反复的操作。我们在sqlmapcontactdao类中需要考虑的唯一的事情就是事务处理逻辑。

 

5.        修改contactselectaction.java类中的execute()方法,如下:

清单4:(文章来源 www.iocblog.net)

 

contact contactform = (contact) form;
reader reader=
  resources.getresourceasreader("daomap.xml");
daomanager daomanager =
  daomanagerbuilder.builddaomanager(reader);
contactdao contactdao =
  (contactdao) daomanager.getdao(
contactdao.class,"sqlmap");

request.setattribute("contactdetail",
  contactdao.selectcontact(
    contactform.getcontactid()));

 

最后一步是修改contactselectaction类中的execute()方法,使它使用dao框架。为了初始化dao框架,我们需要一个为daomap.xml 准备一个reader对象。ibatis框架为我们提供了方法resources.getresourceasreader()来读取资源。一旦有了reader对象来读取daomap.xml,就能将它们读取至daomanagerbuilder.builddaomanager(),返回一个daomanager实例,将来用于与dao框架进行交互。从理论上来说,应该在项目启动的时候初始化dao框架,在我们这个程序中,可以将这个模块放入struts插件中,但是为了简化这个例子,我们将初始化模块放入execute方法中。

 

有了daomanager实例后,可以调用相应的接口和存储实现类(在元素中的id属性值)的getdao()方法。在我们的例子中,需要一个sqlmapcontactdao的实例,所以以contactdao为接口名称,“sqlmap”为存储机制。一旦实现了sqlmapcontactdao实例,就可以在调用其中的事务方法。
 

上一页 [1] [2]


Tag: ibatis ,DAO



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。