根据官网上的开发指南,按照个人使用习惯,频度等整理的,没啥特别的东西。
笑着--胖胖兰学习笔记iBatis入门
一, iBatis简介
iBatis是一种数据库持续层的ORM框架。使用简单的XML配置文件将Java Bean映射成PreparedStatement的输入参数和ResultSet结果集。
在不是很复杂的情况下,我们甚至可以使用HashMap而不是Java Bean来映射PreparedStatement的输入参数和ResultSet结果集,从而节省开发时间与成本。或者,我们可以使用一些辅助工具来帮助我们通过XML配置生成对应的Java Bean.
二, iBatis工作原理,流程
iBatis使用简单的XML描述文件将Java Bean,Map实现和基本数据类型的包装类(String,Integer等)映射成JDBC的PreparedStatement的输入参数和ResultSet结果集。具体工作流程如下:
1.在sqlMapConfig的XML配置文件中进行数据库连接的配置,XML配置文件名称任意,比如sql-map-config.xml
2.在sqlMapConfig的XML配置文件中引用sqlMap的XML配置文件
<sqlMap resource="examples/sqlmap/maps/Person1.xml" /> <sqlMap url="file:///c:/config/Customer.xml " /> |
3.在sqlMap的XML配置文件中进行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); |
5.SqlMapClient对象提供函数,函数的参数对应替换sqlMap配置文件中的id,parameter等等属性,完成SQL文的执行。具体参照iBatis的API
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> |
五,