Java数据库连接-集成第三方ORM框架-iBatis(五)

2014-11-24 02:08:33 · 作者: · 浏览: 10
er.xml
< xml version="1.0" encoding="UTF-8" >
http://ibatis.apache.org/dtd/sql-map-2.dtd" >






















9.3 数据库操作
9.3.1 获取com.ibatis.sqlmap.client.SqlMapClient对象

摘自com.ibatis.sqlmap.client.SqlMapClientBuilder类描述:
Builds SqlMapClient instances from a supplied resource (e.g. XML configuration file)

The SqlMapClientBuilder class is responsible for parsing configuration documents and building the SqlMapClient instance. Its current implementation works with XML configuration files (e.g. sql-map-config.xml).

Example:

Reader reader = Resources.getResourceAsReader("properties/sql-map-config.xml");
SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient (reader);


通过com.ibatis.sqlmap.client.SqlMapClientBuilder类中静态方法
public static SqlMapClient buildSqlMapClient(Reader reader)
public static SqlMapClient buildSqlMapClient(Reader reader, Properties props)
public static SqlMapClient buildSqlMapClient(InputStream inputStream)
public static SqlMapClient buildSqlMapClient(InputStream inputStream, Properties props)
获取com.ibatis.sqlmap.client.SqlMapClient对象



9.3.2 利用com.ibatis.sqlmap.client.SqlMapClient接口中内置的数据库操作方法完成数据库操作
com.ibatis.sqlmap.client.SqlMapClient是一个接口,继承了SqlMapExecutor,SqlMapTransactionManager接口.
public interface SqlMapClient extends SqlMapExecutor, SqlMapTransactionManager

SqlMapExecutor接口中定义了所有数据库操作的方法(This interface declares all methods involved with executing statements and batches for an SQL Map.)
e.g. queryForList(),queryForObject(),querForMap()
queryForList可以用来获取包含多条记录的结果集
queryForObject可以用来获取包含0条或1条记录的结果集

以上二种方式最多可以包含三个参数,最少一个参数.
id对应于SQL映射文件(e.g. sql-map-user.xml)中包含数据库操作SQL语句的标签编号,是必不可少的.
parameterObject指定SQL语句参数
resultObject指定需要的结果数据(当结果集中包含数据所需要的数据量时,可以通过这个参数过滤掉一些不需要的结果数据)
Parameters:
id: The name of the statement to execute.
parameterObject: The parameter object (e.g. JavaBean, Map, XML etc.).
resultObject: The result object instance that should be populated with result data.

Map queryForMap(String id, Object parameterObject, String keyProp) throws SQLException;
用来获取结果集中键为keyProp的结果

Map queryForMap(String id, Object parameterObject, String keyProp, String valueProp) throws SQLException;
用来获取结果集中键为keyProp,值为valueProp的结果


SqlMapTransactionManager接口中定义了数据库事务操作的方法(This interface declares methods for demarcating SQL Map transactions.)
e.g. startTransaction(),commintTransaction(),endTransaction()

默认情况,当完成一次数据库操作(select,insert,update,delete)时,数据库事务总是自动提交,即使使用了startTransaction(),commitTransaction(),endTransaction().

在全局配置文件(e.g. sql-map-config.xml)中,标签的commitRequired属性设置为true时,通过commitTransaction()来手动提交数据库事务.
这种方式的优点:
a) 一次执行多条数据库操作,出错时可以回滚,将数据库还原到出错前.
b) 一次提交效率高,节省多次提交的多次数据库建立,连接资源


摘自com.ibatis.sqlmap.client.SqlMapClient类描述:
A thread safe client for working with your SQL Maps (Start Here). This interface inherits transaction control and execution methods from the SqlMapTransactionManager and SqlMapExecutor interfaces.

The SqlMapClient is the central class for working with SQL Maps. This class will allow you to run mapped statements (select, insert, update, delete etc.)