org.springframework.orm.ibatis
Class SqlMapClientTemplate

org.springframework.jdbc.support.JdbcAccessor
  |
  +--org.springframework.orm.ibatis.SqlMapClientTemplate

public class SqlMapClientTemplate
extends JdbcAccessor
implements SqlMapClientOperations

Helper class that simplifies data access via the SqlMapClient API of iBATIS SQL Maps, and converts checked SQLExceptions into unchecked DataAccessExceptions, following the org.springframework.dao exception hierarchy. Uses the same SQLExceptionTranslator mechanism as JdbcTemplate.

The main method of this class executes a callback that implements a data access action. Furthermore, this class provides numerous convenience methods that mirror SqlMapExecutor's execution methods. See the SqlMapExecutor javadocs for details on those methods.

Needs a SqlMapClient to work on, passed in via the "sqlMapClient" property. Can additionally be configured with a DataSource for fetching Connections, although this is not necessary if a DataSource is specified for the SqlMapClient.

NOTE: The SqlMapClient/SqlMapSession API is the API of iBATIS SQL Maps 2. With SQL Maps 1.x, the SqlMap/MappedStatement API has to be used.

Author:
Juergen Hoeller
Since: 24.02.2004
See Also: execute(org.springframework.orm.ibatis.SqlMapClientCallback), setSqlMapClient(SqlMapClient), org.springframework.jdbc.support.JdbcAccessor.setDataSource(javax.sql.DataSource), org.springframework.jdbc.support.JdbcAccessor.setExceptionTranslator(org.springframework.jdbc.support.SQLExceptionTranslator), SqlMapClientFactoryBean.setDataSource(javax.sql.DataSource), com.ibatis.sqlmap.client.SqlMapClient#getDataSource, com.ibatis.sqlmap.client.SqlMapSession, com.ibatis.sqlmap.client.SqlMapExecutor

Constructor Summary
SqlMapClientTemplate()
          Create a new SqlMapClientTemplate.
SqlMapClientTemplate(SqlMapClient sqlMapClient)
          Create a new SqlMapTemplate.
SqlMapClientTemplate(DataSource dataSource, SqlMapClient sqlMapClient)
          Create a new SqlMapTemplate.

Method Summary
 voidafterPropertiesSet()
           
 intdelete(String statementName, Object parameterObject)
           
 voiddelete(String statementName, Object parameterObject, int requiredRowsAffected)
           
 Objectexecute(SqlMapClientCallback action)
          Execute the given data access action on a SqlMapSession.
 ListexecuteWithListResult(SqlMapClientCallback action)
          Execute the given data access action on a SqlMapSession, expecting a List result.
 MapexecuteWithMapResult(SqlMapClientCallback action)
          Execute the given data access action on a SqlMapSession, expecting a Map result.
 DataSourcegetDataSource()
          If no DataSource specified, use SqlMapClient's DataSource.
 SqlMapClientgetSqlMapClient()
          Return the iBATIS Database Layer SqlMapClient that this template works with.
 Objectinsert(String statementName, Object parameterObject)
           
 ListqueryForList(String statementName, Object parameterObject)
           
 ListqueryForList(String statementName, Object parameterObject, int skipResults, int maxResults)
           
 MapqueryForMap(String statementName, Object parameterObject, String keyProperty)
           
 MapqueryForMap(String statementName, Object parameterObject, String keyProperty, String valueProperty)
           
 ObjectqueryForObject(String statementName, Object parameterObject)
           
 ObjectqueryForObject(String statementName, Object parameterObject, Object resultObject)
           
 PaginatedListqueryForPaginatedList(String statementName, Object parameterObject, int pageSize)
           
 voidqueryWithRowHandler(String statementName, Object parameterObject, RowHandler rowHandler)
           
 voidsetSqlMapClient(SqlMapClient sqlMapClient)
          Set the iBATIS Database Layer SqlMapClient that defines the mapped statements.
 intupdate(String statementName, Object parameterObject)
           
 voidupdate(String statementName, Object parameterObject, int requiredRowsAffected)
           

Methods inherited from class org.springframework.jdbc.support.JdbcAccessor
getExceptionTranslator, isLazyInit, setDataSource, setExceptionTranslator, setLazyInit

Constructor Detail

SqlMapClientTemplate

public SqlMapClientTemplate()
Create a new SqlMapClientTemplate.

SqlMapClientTemplate

public SqlMapClientTemplate(SqlMapClient sqlMapClient)
Create a new SqlMapTemplate.
Parameters:
sqlMapClient - iBATIS SqlMapClient that defines the mapped statements

SqlMapClientTemplate

public SqlMapClientTemplate(DataSource dataSource, SqlMapClient sqlMapClient)
Create a new SqlMapTemplate.
Parameters:
dataSource - JDBC DataSource to obtain connections from
sqlMapClient - iBATIS SqlMapClient that defines the mapped statements
Method Detail

afterPropertiesSet

public void afterPropertiesSet()

delete

public int delete(String statementName, Object parameterObject)
throws org.springframework.dao.DataAccessException

delete

public void delete(String statementName, Object parameterObject, int requiredRowsAffected)
throws org.springframework.dao.DataAccessException

execute

public Object execute(SqlMapClientCallback action)
throws org.springframework.dao.DataAccessException
Execute the given data access action on a SqlMapSession.
Parameters:
action - callback object that specifies the data access action
Returns: a result object returned by the action, or null
Throws:
DataAccessException - in case of SQL Maps errors

executeWithListResult

public List executeWithListResult(SqlMapClientCallback action)
throws org.springframework.dao.DataAccessException
Execute the given data access action on a SqlMapSession, expecting a List result.
Parameters:
action - callback object that specifies the data access action
Returns: the List result
Throws:
DataAccessException - in case of SQL Maps errors

executeWithMapResult

public Map executeWithMapResult(SqlMapClientCallback action)
throws org.springframework.dao.DataAccessException
Execute the given data access action on a SqlMapSession, expecting a Map result.
Parameters:
action - callback object that specifies the data access action
Returns: the Map result
Throws:
DataAccessException - in case of SQL Maps errors

getDataSource

public DataSource getDataSource()
If no DataSource specified, use SqlMapClient's DataSource.
See Also:
com.ibatis.sqlmap.client.SqlMapClient#getDataSource

getSqlMapClient

public SqlMapClient getSqlMapClient()
Return the iBATIS Database Layer SqlMapClient that this template works with.

insert

public Object insert(String statementName, Object parameterObject)
throws org.springframework.dao.DataAccessException

queryForList

public List queryForList(String statementName, Object parameterObject)
throws org.springframework.dao.DataAccessException

queryForList

public List queryForList(String statementName, Object parameterObject, int skipResults, int maxResults)
throws org.springframework.dao.DataAccessException

queryForMap

public Map queryForMap(String statementName, Object parameterObject, String keyProperty)
throws org.springframework.dao.DataAccessException

queryForMap

public Map queryForMap(String statementName, Object parameterObject, String keyProperty, String valueProperty)
throws org.springframework.dao.DataAccessException

queryForObject

public Object queryForObject(String statementName, Object parameterObject)
throws org.springframework.dao.DataAccessException

queryForObject

public Object queryForObject(String statementName, Object parameterObject, Object resultObject)
throws org.springframework.dao.DataAccessException

queryForPaginatedList

public PaginatedList queryForPaginatedList(String statementName, Object parameterObject, int pageSize)
throws org.springframework.dao.DataAccessException

queryWithRowHandler

public void queryWithRowHandler(String statementName, Object parameterObject, RowHandler rowHandler)
throws org.springframework.dao.DataAccessException

setSqlMapClient

public void setSqlMapClient(SqlMapClient sqlMapClient)
Set the iBATIS Database Layer SqlMapClient that defines the mapped statements.

update

public int update(String statementName, Object parameterObject)
throws org.springframework.dao.DataAccessException

update

public void update(String statementName, Object parameterObject, int requiredRowsAffected)
throws org.springframework.dao.DataAccessException