ibatis开发和学习总结文档格式.docx
《ibatis开发和学习总结文档格式.docx》由会员分享,可在线阅读,更多相关《ibatis开发和学习总结文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
更多详细请参考:
第三章用eclipse开发ibatis应用8
配置ibatis开发环境:
8
构建应用框架:
第四章开发实例8
编写model类:
Person.java8
编写数据库脚本:
Person.sql9
编写ibatis的数据库初始配置:
SqlMapConfigExample.xml9
Ibatis配置调用的属性文件;
SqlMapConfigExample.properties10
sqlmap的一对一映射文件:
Person.xml10
绑定sqlmap配置并创建pojo实例的工具类:
11
使用工具类并结合ibatis的sqlmap方法实现的查询:
第一章Ibatis原理
SQLMap的概念
SQLMapAPI让开发人员可以轻易地将JavaBean映射成PreparedStatement的输入参数和ResultSet结果集。
开发SQLMap的想法很简单:
提供一个简洁的架构,能够用20%的代码实现80%JDBC的功能。
SQLMap如何工作
SQLMap提供了一个简洁的框架,使用简单的XML描述文件将JavaBean,Map实现和基本数据类型的包装类(String,Integer等)映射成JDBC的PreparedStatement。
以下流程描述了SQLMaps的高层生命周期:
1)执行mappedstatement。
这是SQLMaps最重要的步骤。
SQLMap框架将创建一个PreparedStatement实例,用参数对象为PreparedStatement实例设定参数,执行PreparedStatement并从ResultSet中创建结果对象。
2)执行SQL的更新数据语句时,返回受影响的数据行数。
执行查询语句时,将返回一个结果对象或对象的集合。
和参数对象一样,结果对象可以是JavaBean,Map实现和基本数据类型的包装类。
安装iBatis需要在类路径下放置以下JAR文件:
文件名
描述
是否必需
ibatis-common.jar
IBATIS公用的工具类
是
ibatis-sqlmap.jar
IBATISSQLMaps框架
ibatis-dao.jar
IBATISDAO框架
否
SQLMapXML配置文件
SQLMap使用XML配置文件统一配置不同的属性,包括DataSource的详细配置信息,SQLMap和其他可选属性,如线程管理等。
以下是SQLMap配置文件的一个例子:
<
?
xmlversion="
1.0"
encoding="
UTF-8"
?
>
!
DOCTYPEsqlMapConfig
PUBLIC"
-//iBATIS.com//DTDSQLMapConfig2.0//EN"
"
sqlMapConfig>
propertiesresource="
maps/SqlMapConfigExample.properties"
/>
settings
cacheModelsEnabled="
true"
enhancementEnabled="
lazyLoadingEnabled="
maxRequests="
32"
maxSessions="
10"
maxTransactions="
5"
useStatementNamespaces="
false"
/>
typeAliasalias="
order"
type="
testdomain.Order"
transactionManagertype="
JDBC"
>
dataSourcetype="
SIMPLE"
propertyname="
JDBC.Driver"
value="
${driver}"
JDBC.ConnectionURL"
${url}"
/dataSource>
/transactionManager>
sqlMapresource="
examples/sqlmap/maps/Person.xml"
/sqlMapConfig>
sqlMapid=”Product”>
selectid=”getProduct”parameterClass=”com.ibatis.example.Product”
resultClass=”com.ibatis.example.Product”>
select
PRD_IDasid,
fromPRODUCT
wherePRD_ID=#id#
/select>
/sqlMap>
配置SQLMap
SQLMap使用XmlSqlMapClientBuilder来创建。
这个类有一个静态方法叫buildSqlMap。
方法buildSqlMap简单地用一个Reader对象为参数,读入sqlMap-config.xml文件(不必是这个文件名)的内容。
Stringresource=“com/ibatis/example/sqlMap-config.xml”;
Readerreader=Resources.getResourceAsReader(resource);
SqlMapClientsqlMap=SqlMapClientBuilder.buildSqlMap(reader);
事务处理
缺省情况下,调用SqlMapClient对象的任意executeXxxx()方法将缺省地自动COMMIT/ROLLBACK。
这意味着每次调用executeXxxx()方法都是一个独立的事务。
这确实很简单,但对于需要在同一个事务中执行多个语句的情况(即只能同时成功或失败),并不适用。
这正是事务处理要关心的事情。
如果您在使用GlobalTransaction(在SQLMap配置文件中设置),您可以使用自动提交并且可以得到在同一事务中执行的效果。
但为了提高性能,最好是明确地划分事务的范围,因为这样做可以减少连接池的通讯流量和数据库连接的初始化。
privateReaderreader=newResources.getResourceAsReader(
com/ibatis/example/sqlMapconfig.xml"
);
privateSqlMapClientsqlMap=XmlSqlMapBuilder.buildSqlMap(reader);
publicupdateItemDescription(StringitemId,StringnewDescription)throwsSQLException{
try{
sqlMap.startTransaction();
Itemitem=(Item)sqlMap.queryForObject("
getItem"
itemId);
item.setDescription(newDescription);
sqlMap.update("
updateItem"
item);
sqlMmitTransaction();
}finally{
sqlMap.endTransaction();
}
批处理
如果要执行很多非查询(insert/update/delete)的语句,您可能喜欢将它们作为一个批处理来执行,以减少网络通讯流量,并让JDBCDriver进行优化(例如压缩)。
SQLMapAPI使用批处理很简单,可以使用两个简单的方法划分批处理的边界:
sqlMap.startBatch();
//…executestatementsinbetween
sqlMap.executeBatch();
当调用endBatch()方法时,所有的批处理语句将通过JDBCDriver来执行。
代码例子
例子1:
执行update(insert,update,delete)
sqlMap.startTransaction();
Productproduct=newProduct();
product.setId
(1);
product.setDescription(“ShihTzu”);
introws=sqlMap.insert(“insertProduct”,product);
sqlMmitTransaction();
例子2:
查询成对象(select)
Integerkey=newInteger
(1);
Productproduct=(Product)sqlMap.queryForObject(“getProduct”,key);
例子3:
用预赋值的结果对象查询成对象(select)
Customercustomer=newCustomer();
sqlMap.queryForObject(“getCust”,parameterObject,customer);
sqlMap.queryForObject(“getAddr”,parameterObject,customer);
例子4:
查询成对象List(select)
Listlist=sqlMap.queryForList(“getProductList”,null);
http:
//ibatis.apache.org/
第二章Ibatis生成工具Abator
Abator是一款ibatis代码生成工具,现在已经有abatorforeclipse版本的eclipse插件可供下载。
简单易用,能完成绝大部分的代码,和xml配置生成,生成后的代码只需要稍作修改即可使用,很适合于快速建模开发,能从一定程度上提高开发效率。
下载abator最新版,并保存到工程的lib目录中。
编写abatorConfig.xml设置好生成器初始化配置。
在命令行环境下执行java-jarabator.jar\temp\abatorConfig.xmltrue根据配置文件生成java实体,tools类,和绑定的sqlmap映射文件。
生成过程中可以根据实际情况决定是否生成sqlmap,model类,和dao数据访问对象类,并