`
peng_jian_ming
  • 浏览: 256025 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多
iBatis是又一个O/R Mapping解决方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案。

iBatis最大的特点是简单,最新版本2.0(下载),和1.0相比,主要改动在XML配置文件上,不过,只要有SQL基础,相信你不用教程也能看明白。下面我们看一个最简单的例子入门。

我们先建一个表Account,包括字段username, varchar(20), pk和password, varchar(20),随便填入一些数据。然后编写iBatis必须的配置文件sql-map-config.xml,文件名随意,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
   PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
   "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
   <settings
     cacheModelsEnabled="true"
     enhancementEnabled="true"
     lazyLoadingEnabled="true"
     maxRequests="32"
     maxSessions="10"
     maxTransactions="5"
     useStatementNamespaces="false"
   />
   <transactionManager type="JDBC" >
     <dataSource type="SIMPLE">
       <property name="JDBC.Driver" value="sun.jdbc.odbc.JdbcOdbcDriver"/>
       <property name="JDBC.ConnectionURL" value="jdbc:odbc:Blog"/>
       <property name="JDBC.Username" value="admin"/>
       <property name="JDBC.Password" value=""/>
     </dataSource>
   </transactionManager>
   <sqlMap resource="Account.xml" />
</sqlMapConfig>

其他部分你不用管它,我是直接copy的示例配置,只需注意红色部分,配置好数据源即可。我用的是Access,所以用JdbcOdbc驱动。如果你用MySQL或其他数据库,更改相应的属性。

然后注意到这个配置文件还引用了一个Account.xml,没错,iBatis把每个需要O/R Mapping的Java对象关联到一个xml配置文件,我们需要把一个Account表映射到一个Account类:

package example;
public class Account {
     private String username;
     private String password;

     public String getUsername() { return username; }
     public void setUsername(String username) { this.username=username; }

     public String getPassword() { return password; }
     public void setPassword(String password) { this.password=password; }
}

编写Account.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
   PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
   "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Account">

   <select id="getAccount" parameterClass="java.lang.String" resultClass="example.Account">
     select * from Account where username = #value#
   </select>

   <insert id="createAccount" parameterClass="example.Account">
     insert into Account (username, password)
     values ( #username#, #password# )
   </insert>
</sqlMap>

我们主要关心红色部分。以<select ...>为例,这里定义了一个查询方法,名字为getAccount,传入参数为String,返回类型resultClass就是example.Account类,select语句相信你已经很熟悉了,#value#是我们将要传进去的String。

<insert...>与之类似,不过注意到#username#和#password#,由于参数是Account类,它们将被Account.getUsername()和Account.getPassword()替换。所以,只要你会写SQL,就能非常容易地写出配置文件。

最后便是如何使用iBatis实现O/R映射。首先初始化iBatis获得一个SqlMapClient对象:

    com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
     try {
         java.io.Reader reader = om.ibatis.common.resources.Resources.getResourceAsReader ("sql-map-config.xml");
         sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
     } catch (Exception e) {
         e.printStackTrace();
     }

然后就可以异常方便地使用O/R Mapping了,比如查询username=admin的Account:

    try {
         Account accout = (Account)sqlMap.queryForObject("getAccount", "admin");
         ...
     }

或者创建一个新的Account:

     try {
         Account account = new Account();
         account.setUsername("micheal");
         account.setPassword("1234");
         sqlMap.insert("createAccount", account);
     }

运行时把两个配置文件和iBatis的3个jar包放到classpath中,要求jdk1.4版本。

总结:iBatis确实简单灵活,上手容易,代码很少,配置稍嫌复杂。不足之处一是没有方便的工具来自动生成xml配置文件,二是不管是query还是insert都只能传入一个参数,有时不得不把两个参数包装成一个类传进去。另外对常见的1:1,1:N关系的支持不如Hibernate。不过,大多数时候iBatis已经完全可以满足我们的需求。Spring很好的集成了iBatis,你可以参考Spring的JPetStore示例。需要注意的是使用iBatis 2.0和1.0有较大区别,主要体现在配置文件上,iBatis 2.0新增了DAO框架,不需要Spring提供的DAO也能很方便地实现DAO模式。
分享到:
评论

相关推荐

    ibatis简介

    NULL 博文链接:https://jcyanfan.iteye.com/blog/266720

    ibatis简介 主要介绍了ibatis的作用和使用环境

    ibatis简介 iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

    iBATIS_简介

    iBATIS 简介

    iBATIS课件

    iBATIS课件 iBATIS简介 搭建环境 配置文件 读取配置 基本的CRUD操作 模糊查询 iBATIS代码生成工具iBATOR 优缺点 选择Hibernate还是iBATIS

    iBatis简单入门实例(以Oracle为例)

    iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,这是一个...

    iBATIS实战.pdf

    内容简介 《iBATIS实战》是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。《iBATIS实战》的最后给...

    iBatis骨头森林博客园

    iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案。

    ibatis PPT

    iBatis简介 搭建环境 配置文件 基本的CRUD操作 模糊查询 自动主键selectKey 优点

    iBATIS 框架简介

    本文档简单介绍了ibatis框架,需要使用ibtais的,可以从中得到一些启发

    struts2 + spring + ibatis 实例

    struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例

    ibatis教程简介

    ibatis教程简介适合初学者 ibatIS mybatis 框架

    iBATIS框架源码剖析

    资源名称:iBATIS框架源码剖析内容简介:iBATIS是一种比较流行的ORM框架,本书全面介绍其结构体系和分析其源程序代码,该框架的核心包括两个组件,一个是iBATIS DAO,另一个是iBATIS SQL Map。本书分为三个部分,第...

    iBATIS实战

    4.2.3 SQL注入简介 72 4.2.4 自动结果映射 73 4.2.5 联结相关数据 74 4.3 映射参数 75 4.3.1 外部参数映射 75 4.3.2 再论内联参数映射 76 4.3.3 基本类型参数 78 4.3.4 JavaBean参数和Map参数 78 4.4 使用内联结果...

    ibatis学习文档

    ibatis的简介和操作,是初学者的不二选择,讲解清晰明了

    各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)

    各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)

    iBatis SQL Maps开发指南.pdf

    开发指南 iBATIS SQL Maps Page 3 of 62 Map类型的Result 复杂类型属性(即自定义类型的属性) 避免N+1 Select(1:1) 延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多...

    ibatis实战

    资源名称:ibatis实战内容简介:本书是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出...

    【最新】ibatis教程简介ppt模版课件

    北大青鸟ibatis课件,可以看看哦,很详细的

    iBATIS SQL Maps 开发指南

    简介 使用SQL Map,能够大大减少访问关系数据库的代码。SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。...

Global site tag (gtag.js) - Google Analytics