resultClass=”com.ibatis.example.Product”>
select
PRD_IDasid,
fromPRODUCT
wherePRD_ID=#id#
配置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)
sqlMap.startTransaction();
Integerkey=newInteger
(1);
Productproduct=(Product)sqlMap.queryForObject(“getProduct”,key);
sqlMmitTransaction();
例子3:
用预赋值的结果对象查询成对象(select)
sqlMap.startTransaction();
Customercustomer=newCustomer();
sqlMap.queryForObject(“getCust”,parameterObject,customer);
sqlMap.queryForObject(“getAddr”,parameterObject,customer);
sqlMmitTransaction();
例子4:
查询成对象List(select)
sqlMap.startTransaction();
Listlist=sqlMap.queryForList(“getProductList”,null);
sqlMmitTransaction();
更多详细资料请参照:
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数据访问对象类,并