iBatis 学习笔记

 
iBatis 学习笔记
           
一、何为 iBatis
iBatis 是一种“半自动化”的ORM实现。
这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”
ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO 与SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。
 
二、何时用 iBatis
1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几
条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
2. 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由
存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交
通银行,都在开发规范中严格指定)
3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高
度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
 
三、iBatis 的下载
四、iBatis 的基础构建代码
    1 ibatis 实例配置
一个典型的配置文件如下(具体配置项目的含义见后):
<? 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"
errorTracingEnabled
="true"
maxRequests
="32"
maxSessions
="10"
maxTransactions
="5"
useStatementNamespaces
="false" />
< transactionManager  type ="JDBC" >
< dataSource  type ="SIMPLE" >
< property  name ="JDBC.Driver"
value
="com.p6spy.engine.spy.P6SpyDriver" />
< property  name ="JDBC.ConnectionURL"
value
="jdbc:mysql://localhost/sample" />
< property  name ="JDBC.Username"  value ="user" />
< property  name ="JDBC.Password"  value ="mypass" />
< property  name ="Pool.MaximumActiveConnections"
value
="10" />
< property  name ="Pool.MaximumIdleConnections"  value ="5" />
< property  name ="Pool.MaximumCheckoutTime"
value
="120000" />
< property  name ="Pool.TimeToWait"  value ="500" />
< property  name ="Pool.PingQuery"  value ="select 1 from
ACCOUNT"
/>
< property  name ="Pool.PingEnabled"  value ="false" />
< property  name ="Pool.PingConnectionsOlderThan"
value
="1" />
< property  name ="Pool.PingConnectionsNotUsedFor"
value
="1" />
</ dataSource >
</ transactionManager >
< sqlMap  resource ="com/ibatis/sample/User.xml" />
</ sqlMapConfig >
2
POJO P lain Ordinary Java Object
下面是我用作示例的一个 POJO:
public   class  User  implements  Serializable {
private  Integer id;
private  String name;
private  Integer sex;
private  Set addresses  =   new  HashSet();
/**  默认构造函数  */
public  User() {
}
/**  省略 getter/setter 方法  */
………………………………………….
3
. 映射文件
Hibernate 不同。因为需要人工编写 SQL 代码, ibatis 的映射文件一般采
用手动编写(通过 Copy/Paste ,手工编写映射文件也并没想象中的麻烦)。
针对上面 POJO 的映射代码如下:
<? 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 ="User" >
< typeAlias  alias ="user"  type ="com.ibatis.sample.User" />
< select  id ="getUser"
parameterClass
="java.lang.String"
resultClass
="user" >
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</ select >
< update  id ="updateUser"
parameterClass
="user" >
<![CDATA[
UPDATE t_user
SET
name=#name#,
sex=#sex#
WHERE id = #id#
]]>
</ update >
< insert  id ="insertUser"
parameterClass
="user"
>  
INSERT INTO t_user (
name,
sex)
VALUES (
#name#,
#sex#
)
</ insert >
< delete  id ="deleteUser"
parameterClass
="java.lang.String" >
delete from t_user
where id = #value#
</ delete >
</ sqlMap >
五、iBatis 的配置
六、iBatis 的高级特性
七、iBatis 与其它的ORM解决方案的区别
     未写完的待续。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值