快速业务通道

iBATIS 3内的新特性:将iBATIS用作应用程序内的一种持久框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
ava 应用程序时,可以看到 --create 创建了四个新 Automobile 对象并将它们添加到 数据库的 automobiles 表。使用 --delete 实参可以从数据库删除这些对象。使用具有 ID 的 --show 运行这个 SQL 脚本以获得匹配的数据库记录,创建一个具有数据的 Automobile 对象并将结果显示到控 制台。

XML 配置示例正常工作后,您就可以开始了解 iBATIS 3 的另一个关键的新特性:Java 注释支持。

Java 5 特性

iBATIS 3 带来了一些新的变化,允许您利用 Java 5 注释。通过使用注释,您可以创建 mapper 接口 来供您在 Java 代码内进行从对象到数据库的全部映射。清单 8 所示的代码展示了这个用于配置(并非 XML 配置)的 AutomobileMapper 接口。

清单 8. AutomobileMapper 接口

package com.ibm.developerWorks.examples.ibatis.data; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import com.ibm.developerWorks.examples.ibatis.model.Automobile; public interface AutomobileMapper {   @Select("select id, make, model, model_year as \"year\" from  automobiles     where id = #{id}")   Automobile selectAutomobile(final int id);   @Insert("insert into automobiles(id,make,model,model_year)     values (#{id}, #{make}, #{model}, #{year})")   void insertAutomobile(final Automobile arg);   @Delete("delete from automobiles")   void deleteAll(); }

iBATIS 3内的新特性:将iBATIS用作应用程序内的一种持久框架(8)

时间:2011-11-11 IBM Nathan A. Good

在 Automobile mapper 的 XML 配置中,resultMap 元素用来映射 model_year 数据库列与 Automobile 对象上的 year 字段。这个映射相当简单,可以在注释内进行,只要使用为该列赋别名的 SQL 特性就可以了,这个特性可由在 @Select 注释内定义的 SQL 完成。

AutomobileMapper 接口内的 Select 注释将 selectAutomobile 方法映射到用来根据给定值从 automobiles 表选择一个记录的 SQL。这个值被指定为实参的 id 参数并被作为 #{id} 包括在这个 SQL 语句内,正如其在 XML 配置中那样。使用 Java 接口映射这些 SQL 方法的一个极大的好处是 feedbac 会以编译时错误的形式出现在 Java 编辑器中。这样一来,我们就可以确认这些方法均能返回正确的类型 ,而 XML 配置通常需要先执行代码才能找到错误。

此外,iBATIS 3 现在还支持接口继承,允许对 Java 接口进行优化以减少代码重复。

iBATIS 文档中有这样的一个提示,即对于较小且较为简单的项目,注释可以更为简单和易读。不过, 较 XML 配置而言,注释的功能相对有限。若项目中包含复杂的对象或复杂的数据库结构,请考虑使用 XML 配置,而不是 Java 注释。

其他的 API 变更

iBATIS 的基于注释的配置要求实例化也要稍微不同。我们不再使用 Reader 类来读取 XML 配置,而 是要向 Configuration 对象添加映射程序,如清单 9 所示。

清单 9. 使用了注释配置的新 Java 代码

package com.ibm.developerWorks.examples.ibatis; // snipped imports public class Main {    // snipped constants declarations--didn''t change    // new method for creating data source    private static DataSource createDataSource() { EmbeddedDataSource    dataSource = new org.apache.derby.jdbc.EmbeddedDataSource();    dataSource.setDatabaseName("/tmp/MyDB"); re

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号