扩展 iBatis 以透明支持多种数据库.docx
《扩展 iBatis 以透明支持多种数据库.docx》由会员分享,可在线阅读,更多相关《扩展 iBatis 以透明支持多种数据库.docx(8页珍藏版)》请在第壹文秘上搜索。
1、扩展iBatis以透亮支持多种数据库iBatis是一个开源的对象关系映射框架,着重于POJO与SQL之间的映射关系。和其它ORM框架不同,iBatis开发者需要自己编写利维护SQL语句。为了得到更好的执行性能,在实际开发中免不了会使用一些数据库方言。随之而来的一个问题是,如何在增加对新的数据库支持的同时尽可能避开对已有应用程序代码的修改?本文供应了一个简洁有效的方法,通过扩展iBatis来透亮地支持多数据库方言。iBatis简介iBatis是一个开源的对象关系映射程序,着重于POJO与SQL之间的映射关系。使用时,开发者供应一个被称为SQL映射的XML文件,定义程序对象与SQL语句间的映射关系
2、,iBatis会依据SQL映射文件的定义,运行时自动完成SQL调用参数的绑定以及JDBCResuItSet到JaVaPoJO之间的转换。下面是一个简洁的例子,相比其它ORM工具,iBatis相对简洁,更简洁上手。清单1.POJO对象publicclassBIogDataimplementsSerializableprotectedStringid;protectedStringname;protectedintrating=0;publicStringgetld()returnid;1publicStringgetName()returnname;(publicintgetRating()re
3、turnrating;1publicvoidsetId(Stringid)this.id=id;)publicvoidsetName(Stringname)this.name=name;1publicvoidsetRating(intrating)this.rating=rating;清单2.SQL映射文件Sqlmarxmlinsertintoblogs(id,name,rating)values(#id#,#name#,#rating#)updateblogssetname=#name#,rating=#rating#whereid=#id#deletefromblogswhereid=#i
4、d#select*fromblogsorderbyratingdescfetchfirst$SiZe$rowsonly清单3.iBatis配置文件SQLMAPCONFIGXML/SQL映射声明清单4.SQL访问示例Stringcfg=,SQLMAPCONFIGXML;Readerr=Resources.getResourceAsReader(cfg);SqlMapClientclient=newSqlMapConfigParser().parse(r);/插入BlogDatao=newBlogData();o.setld(id,r);o.setName(test);client.insert(
5、SAVEBLOG,o);/更新o.setRating(10);Client.UpdateCUPDATEBLOG,o);/删除client.delete(REMOVEBLOG,id);/查询Mapparams=newHashMapO;params.put(size,5);Listl=client.queryForList(GETMOSTPOPULARBLOGparams,0,5);iBatis应用中的多数据库支持在iBatis应用中,开发者仍需自己编写详细的SQL语句,iBatis只是隐蔽和简化了JDBC的相关调用。实际开发中,我们不免需要就SQL语句针对各种特定的数据库进行特别优化,以期猎取更
6、好的执行性能,随之而来的一个问题是,如何应对新的数据库平台支持的需求。一般的做法是,修改SQL映射文件,供应一些新的针对新数据库平台的SQL语句版本,然后修改程序代码,添加相应调用。连续上面的例子。上面的例子中,对于SQL语句Getmostpopularblog的定义,我们使用了db2特有的sql方言“fetchfirstnROWS0NLY,对于这样的程序,假如盼望增加对MYSQL的支持,依据一般的做法,需要:1 .修改Sqlmarxml,增力口语句定义getmostpopularblog_mysql”。清单5.增加语句定义select*fromblogsorderbyratingdescfe
7、tchfirst$size$rowsonlyselect*fromblogsorderbyratingdesclimit0,$size$2 .搜寻程序代码,在每一个调用iBatis“GETMOSTPOPULARBLOG”的地方,增加检测MYSQL数据库引擎的代码,并添加对“GETMOSTPOPULARBLOG_MYSQL”的iBatis调用。清单6.增加检测数据库引擎的代码SqIMapClientclient=/查询Mapparams=newHashMapO;params.put(size,5);List1=null;Connectionconn=client.getCurrentConnec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扩展 iBatis 以透明支持多种数据库 透明 支持 多种 数据库
