[计算机]扩展 iBatis 以透明支持多种数据库.docVIP

[计算机]扩展 iBatis 以透明支持多种数据库.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]扩展 iBatis 以透明支持多种数据库

扩展 iBatis 以透明支持多种数据库 iBatis 是一个开源的对象关系映射框架,着重于 POJO 与 SQL 之间的映射关系。和其它 ORM 框架不同,iBatis 开发者需要自己编写和维护 SQL 语句。为了得到更好的执行性能,在实际开发中免不了会使用一些数据库方言。随之而来的一个问题是,如何在增加对新的数据库支持的同时尽可能避免对已有应用程序代码的修改?本文提供了一个简单有效的方法,通过扩展 iBatis 来透明地支持多数据库方言。 iBatis 简介 iBatis 是一个开源的对象关系映射程序,着重于 POJO 与 SQL 之间的映射关系。使用时,开发者提供一个被称为 SQL 映射的 XML 文件,定义程序对象与 SQL 语句间的映射关系, iBatis 会根据 SQL 映射文件的定义,运行时自动完成 SQL 调用参数的绑定以及 JDBC ResultSet 到 Java POJO 之间的转换。下面是一个简单的例子,相比其它 ORM 工具,iBatis 相对简单,更容易上手。 清单 1. POJO 对象 public class BlogData implements Serializable { protected String id; protected String name; protected int rating = 0; public String getId() { return id; } public String getName() { return name; } public int getRating() { return rating; } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public void setRating(int rating) { this.rating = rating; } } 清单 2. SQL 映射文件—— SQLMAP.XML insert into blogs(id, name, rating) values(#id#, #name#, #rating#) update blogs set name = #name#, rating = #rating# where id = #id# delete from blogs where id = #id# select * from blogs order by rating desc fetch first $size$ rows only 清单 3. iBatis 配置文件—— SQLMAPCONFIG.XML //SQL 映射声明 清单 4. SQL 访问示例 String cfg = SQLMAPCONFIG.XML; Reader r = Resources.getResourceAsReader(cfg); SqlMapClient client = new SqlMapConfigParser().parse(r); ... // 插入 BlogData o = new BlogData(); o.setId(id); o.setName(test); client.insert(SAVEBLOG, o); ... // 更新 o.setRating(10); client.update(UPDATEBLOG, o); ... // 删除 client.delete(REMOVEBLOG, id); ... // 查询 Map params = new HashMap(); params.put(size, 5); List l = client. queryForList(GETMOSTPOPULARBLOG, params, 0, 5); ... iBatis 应用中的多数据库支持 在 iBatis 应用中,开发者仍需自己编写具体的 SQL 语句,iBatis 只是隐藏和简化了 JDBC 的相关调用。 实际开发中,我们不免需要就 SQL 语句针对各种特定的数据库进行特殊优化,以期获取更好的执行性能,随之而来的一个问题是,如何应对新的数据库平台支持的需求。 一般的做法是,修改 SQL 映射文件,提供一些新的针对新数据库平台的 SQL 语句版本,然后修改程序代码,添加相应调用。继续上面的例子。上面的例子中,对于 SQ

您可能关注的文档

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档