现在的位置: 首页 > 综合 > 正文

笑着学习笔记iBatis入门

2013年10月11日 ⁄ 综合 ⁄ 共 3714字 ⁄ 字号 评论关闭

根据官网上的开发指南,按照个人使用习惯,频度等整理的,没啥特别的东西。

笑着--胖胖兰学iBatis

一,       iBatis简介

iBatis是一种数据库持续层的ORM框架。使用简单的XML配置文件将Java Bean映射成PreparedStatement的输入参数和ResultSet结果集

 

在不是很复杂的情况下,我们甚至可以使用HashMap而不是Java Bean来映射PreparedStatement的输入参数和ResultSet结果集,从而节省开发时间与成本。或者,我们可以使用一些辅助工具来帮助我们通过XML配置生成对应的Java Bean.

 

 

 

 

 

 

 

 

 

二,       iBatis工作原理,流程

iBatis使用简单的XML描述文件将Java BeanMap实现和基本数据类型的包装类(StringInteger等)映射成JDBCPreparedStatement的输入参数和ResultSet结果集。具体工作流程如下:

 

1.在sqlMapConfigXML配置文件中进行数据库连接的配置,XML配置文件名称任意,比如sql-map-config.xml

2sqlMapConfigXML配置文件中引用sqlMapXML配置文件

<sqlMap resource="examples/sqlmap/maps/Person1.xml" />

<sqlMap url="file:///c:/config/Customer.xml " />

3.在sqlMapXML配置文件中进行SQL文的配置,文件名称任意,比如Person1.xml

4.通过SqlMapClientBuilder生成具体的操作sqlMap配置文件中SQL文的IBATIS对象SqlMapClient

String resource = "config/ibatis/sql-map-config.xml";                  

Reader reader = Resources.getResourceAsReader (resource);                      

SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

5SqlMapClient对象提供函数,函数的参数对应替换sqlMap配置文件中的id,parameter等等属性,完成SQL文的执行。具体参照iBatisAPI

public List queryForList(String statementName, Object parameterObject,

int skipResults, int maxResults)

statement:sqlMap配置中id属性,parameterObject:sqlMap配置中parameterXXX属性

 

 

iBatis的工作重点在于配置文件的做成上,尤其sqlMap配置文件的做成是我们需要重点学习的。

 

 

 

 

 

 

 

 

三,       SqlMapConfig.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>

<properties resource=" examples/sqlmap/maps/SqlMapConfigExample.properties " />

<settings

cacheModelsEnabled="true"

enhancementEnabled="true"

lazyLoadingEnabled="true"

maxRequests="32"

maxSessions="10"

maxTransactions="5"

useStatementNamespaces="false"

/>

<typeAlias alias="order" type="testdomain.Order"/>

<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="JDBC.DefaultAutoCommit" value="true" />

<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="examples/sqlmap/maps/Person.xml" />

<sqlMap url="file:///c:/config/Customer.xml " />

</sqlMapConfig>

 

以上,主要注意DB连接情报的配置方法,采用了Java的标准Properties文件。

<properties resource=" examples/sqlmap/maps/SqlMapConfigExample.properties " />

       然后在XML中引用properties文件中的定义。

           <property name="JDBC.Driver" value="${driver}"/>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四,       SqlMap.xml总体印象

较复杂的例子:

<sqlMap id=”Product”>

<cacheModel id=”productCache” type=”LRU”>

<flushInterval hours=”24”/>

<property name=”size” value=”1000” />

</cacheModel>

<typeAlias alias=”product” type=”com.ibatis.example.Product” />

<parameterMap id=”productParam” class=”product”>

<parameter property=”id”/>

</parameterMap>

<resultMap id=”productResult” class=”product”>

<result property=”id” column=”PRD_ID”/>

<result property=”description” column=”PRD_DESCRIPTION”/>

</resultMap>

<select id=”getProduct” parameterMap=”productParam”

resultMap=”productResult” cacheModel=”product-cache”>

select * from PRODUCT where PRD_ID = ?

</select>

</sqlMap>

 

      以上例子简化版:

<sqlMap id=”Product”>

<select id=”getProduct” parameterClass=” com.ibatis.example.Product”

resultClass=”com.ibatis.example.Product”>

Select

PRD_ID as id,

PRD_DESCRIPTION as description

From PRODUCT

Where PRD_ID = #id#

</select>

</sqlMap>

 

五,      

【上篇】
【下篇】

抱歉!评论已关闭.