相对于Hibernate提供了全面的数据库封装机制的“全自动化”ORM实现而言,iBATIS则是一种“半自动”的ORM实现。
所谓“全自动化”ORM实现是指实现了POJO(Plain Old Java Object 简单的Java对象)和数据库表之间的映射,以及SQL的自动生成和执行。而IBatis则不会为程序员在运行期间自动生成SQL语句,需要程序员自己编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定的POJO中。
iBatis 与 Hibernate 的区别:
Hibernate功能强大,数据库无关性好,O/R映射能力强,如果对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么整个持久层代码会相当简单,需要写的代码很少,开发速度快。Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。程序员只需要定义好POJO到数据表的映射关系,即可通过Hibernate提供的方法完成持久层的操作。程序员甚至不需要对SQL相当熟练的掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行。
iBatis 入门简单,即学即用,提供了数据库查询的自动绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。当系统数据处理量巨大、性能要求极为苛刻时,这往往意味着我们必须经过高度优化的SQL语句(或存储过程)才能达到性能设计的指标。在这种情况下iBatis会有更好的可控性和表现。
总之:Hibernate比iBatis复杂,学习成本高,iBatis简单容易上手,是基于原生SQL的框架。可以说Hibernate功能强大而复杂,iBatis简单而小巧。
iBATIS的下载与配置:
iBATIS的官方下载地址:http://labs.renren.com/apache-mirror/ibatis/binaries/ibatis.java/
MYBATIS的官方下载地址:http://code.google.com/p/mybatis/downloads/list
注:iBATIS 是 3.0以前的版本的名字,3.0(包括3.0)以后的版本叫MyBatis。MyBatis 和 iBatis有很多的区别,包括包的结构和类名。而我们今天所说的iBatis是指3.0以前的版本。
注:所有的持久类属性的类型都不要声明为基本类型(int、long、float、double),应该声明为对应的封装类型(Integer、Long、Float、Double),因为IBatis是面向对象的解决方案。因此所有的属性、参数和结果必须是对象。
把下载的iBatis文件(jar文件)和数据库驱动文件(jar文件)添加到当前项目的lib文件夹中并添加到当前项目的classpath中。
配置文件样例(sqlMapConfig.xml):
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<properties resource="SqlMapConfig.properties" /> /*引用属性文件*/
<settings
enhancementEnabled="true" /*全局性地启用运行时字节码增强*/
useStatementNamespaces="true" /*使用全限定名来应用Mapped statement*/
cacheModelsEnabled="true" /*全局性地启用缓存模式*/
lazyLoadingEnabled="true" /*全局性地使用所有延迟加载*/
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" /
<property name="JDBC.Password" value="${password}" />
<property name="Pool.MaximumActiveConnections" value="10" /> /*数据库连接池可维持的最大容量*/
<property name="Pool.MaximumIdleConnections" value="5" /> /*数据库连接池可挂起的连接数*/
<property name="Pool.MaximumCheckoutTime" value="120000" /> /*连接某个任务占用的最大时间(ms)*/
<property name="Pool.TimeToWait" value="500" /> /*线程等待连接的最大时间(ms)*/
<property name="Pool.PingQuery" value="select 1 from users" /> /*数据库连接状态检测语句*/
<property name="Pool.PingEnabled" value="false" /> /*是否允许检测连接状态*/
<property name="Pool.PingConnectionsOlderThan" value="1" /> /*对连接时间超过设定值将进行连接检测*/
<property name="Pool.PingConnectionsNotUsedFor" value="1" /> /*对空闲超过设定值的连接进行检测*/
</dataSource>
</transactionManager>
<sqlMap resource="com/demo/ibatis/beans/users_SqlMap.xml" />
</sqlMapConfig>
SqlMapConfig.properties 属性文件:
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo;SelectMethod=cursor(SQL Server数据库必须有)
username=sa
password=joe
注:配置文件和属性文件均在src文件夹和bin文件夹中。
users_SqlMap.xml映射文件样例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="users">
<cacheModel id="userCache" type="LRU">
<flushInterval hours="24"/>
<property name="size" value="1000"/>
</cacheModel>
<typeAlias alias="User" type="com.demo.ibatis.beans.User"/> /*使用别名*/
<resultMap id="userResult" class="User">
<result property="id" column="ID" jdbcType="VARCHAR"/>
<result property="username" column="username" jdbcType="VARCHAR"/>
<result property="password" column="password" jdbcType="VARCHAR"/>
<result property="email" column="email" jdbcType="VARCHAR"/>
</resultMap>
<select id="getUser" cacheModel="userCache" resultMap="userResult" parameterClass="User">
select * from user where id = #id#
</select>
<select id="getUserList" cacheModel="userCache" resultMap="userResult" parameterClass="User">
select * from user
</select>
<insert id="insertUser" parameterClass="User">
insert into user(ID,username,password,email)
values(#id:NUMERIC#,#username:VARCHAR#,#password:VARCHAR#,#email:VARCHAR#);
</insert>
<update id="updateUser" parameterClass="User">
update user set username=#username:VARCHAR#,password=#password:VARCHAR#,email=#email:VARCHAR#
where ID=#id:NUMERIC#;
</update>
<delete id="deleteUser" parameterClass="User">
delete from user where ID="id:NUMERIC";
</delete>
</sqlMap>
分享到:
相关推荐
Ibatis基本配置---[环境搭建
### iBATIS基本配置 iBATIS是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,降低了Java代码与数据库之间的耦合度。以下是iBATIS配置的主要步骤: 1. **添加依赖**:首先,在项目中引入...
### ibatis配置文件信息 #### 一、简介 在Java开发领域中,ibatis(现称为MyBatis)是一款优秀的持久层框架,它通过XML或注解的方式将接口方法与SQL语句绑定起来,实现对象关系映射(ORM)功能。ibatis的主要优势...
这个"iBatis 基本jar包"包含了运行iBatis框架所需的核心组件,使得开发者能够快速地在项目中集成并使用iBatis。 1. **iBatis 框架概述**: iBatis 是由Clinton Begin创建的一个开源项目,最初是为了解决Java中的...
本篇文章将详细讲解如何在Ibatis中使用注解进行配置,帮助你理解并掌握这一重要技能。 首先,让我们了解Ibatis的基本概念。Ibatis是一个轻量级的Java ORM(对象关系映射)框架,它允许我们编写SQL语句并将其与Java...
三、iBatis基本配置 1. 引入依赖:在你的项目中,需要引入iBatis的相关依赖,这通常是在Maven或Gradle的配置文件中完成。 2. 配置主配置文件(sqlmapconfig.xml):这个文件定义了数据源、事务管理器等全局信息,...
在iBatis中,我们通常通过XML配置文件或者注解来定义SQL语句,并使用占位符(例如#{}或${})来传递参数。 1. **参数绑定**:iBatis使用占位符(#{})进行参数绑定,可以防止SQL注入攻击。当使用#{paramName}时,...
下面将详细介绍这三个框架的基本概念、作用以及如何进行集成配置。 **1. Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它负责处理用户请求,分发到相应的控制器,然后更新...
`sqlMapConfig.xml`是ibatis框架的核心配置文件之一,它不仅定义了与数据库交互的基本配置,还涉及到了性能调优的关键设置。通过对这些配置项的理解和合理设置,可以显著提高应用程序的性能和稳定性。开发者应根据...
**Ibatis 安装配置详解** Ibatis 是一个优秀的轻量级 Java ORM(对象关系映射)框架,它允许开发者将 SQL 查询与 Java 代码分离,使得数据库操作更加灵活和可维护。在本文中,我们将深入探讨如何在 MyEclipse 开发...
这两个JAR文件共同构成了Ibatis的基本运行环境,开发者可以利用它们来构建数据访问层,实现高效且易于维护的数据库操作。在实际项目中,通常还需要结合其他依赖,如数据库驱动,以及Spring等框架进行整合使用。
2. **配置文件**: Ibatis的配置文件通常为`mybatis-config.xml`,包含了数据源、事务管理器、环境、插件、类型别名、映射文件等全局配置信息。在描述中提到的配置已经成功,意味着这个配置文件被正确解析并且能够...
首先,我们需要理解Ibatis动态SQL的基本概念。在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等。它们...
5. **编写Mapper接口和XML配置**:在iBatis的配置文件`mybatis-config.xml`中,设置mapper文件的位置。同时,为每个数据操作编写Mapper接口,接口方法对应SQL语句,XML文件中编写具体的SQL和结果映射。 6. **...
通过对`sqlMapConfig.xml`文件的深入解析,我们不仅了解了ibatis配置文件的基本结构,还掌握了如何通过配置文件来调整ibatis的行为,这对于实际开发工作具有重要的指导意义。在后续的学习过程中,我们还将进一步探索...
一、iBatis基本概念 1. SQL映射文件:iBatis的配置文件,包含了SQL语句、参数映射和结果映射等信息。 2. Mapper接口:Java中的接口,用于定义数据库操作的方法,每个方法对应一个SQL语句。 3. SqlSessionFactory:...
通过上述步骤,我们已经完成了ibatis的基本配置。在实际开发过程中,还需要编写具体的SQL映射文件和Java代码来实现对数据库的操作。希望这篇教程能够帮助大家快速上手ibatis,为后续的学习打下坚实的基础。
通过以上步骤,你已经完成了Ibatis的基本配置,可以开始进行数据库操作了。在实际开发中,还可以利用Ibatis的动态SQL、结果映射、缓存等功能来提升效率。继续深入学习Ibatis,你会发现它是一个功能强大且灵活的持久...
数据源配置决定了ibatis如何连接数据库,示例中的 `SIMPLE` 类型是最基本的配置方式: ```xml <!-- 连接池配置 --> ``` 这里配置了数据库驱动、连接URL、用户名和密码,还包含了连接池的相关配置,如...