设为首页 加入收藏

TOP

ibatis之SqlMapClientTemplate和SqlMapClient(一)
2014-11-23 22:26:23 来源: 作者: 【 】 浏览:35
Tags:ibatis SqlMapClientTemplate SqlMapClient
SqlMapClientTemplate是SqlMapClient的封装类.
SqlMapClient中包含着session的管理.
SqlMapClientTemplate用于session的封装,以及异常的捕捉.
所以按照以上的推断来说.应该尽量使用SqlMapClientTemplate.

保证session以及Exception的正常以及统一.

SqlMapClientTemplate源码

/*     */ package org.springframework.orm.ibatis;
/*     */ 
/*     */ import com.ibatis.common.util.PaginatedList;
/*     */ import com.ibatis.sqlmap.client.SqlMapClient;
/*     */ import com.ibatis.sqlmap.client.SqlMapExecutor;
/*     */ import com.ibatis.sqlmap.client.SqlMapSession;
/*     */ import com.ibatis.sqlmap.client.event.RowHandler;
/*     */ import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
/*     */ import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
/*     */ import java.sql.Connection;
/*     */ import java.sql.SQLException;
/*     */ import java.util.List;
/*     */ import java.util.Map;
/*     */ import javax.sql.DataSource;
/*     */ import org.springframework.dao.DataAccessException;
/*     */ import org.springframework.dao.InvalidDataAccessApiUsageException;
/*     */ import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException;
/*     */ import org.springframework.jdbc.datasource.DataSourceUtils;
/*     */ import org.springframework.jdbc.support.JdbcAccessor;
/*     */ import org.springframework.jdbc.support.SQLExceptionTranslator;
/*     */ import org.springframework.util.Assert;
/*     */ 
/*     */ public class SqlMapClientTemplate extends JdbcAccessor
/*     */   implements SqlMapClientOperations
/*     */ {
/*     */   private SqlMapClient sqlMapClient;
/*     */ 
/*     */   public SqlMapClientTemplate()
/*     */   {
/*     */   }
/*     */ 
/*     */   public SqlMapClientTemplate(SqlMapClient sqlMapClient)
/*     */   {
/* 101 */     setSqlMapClient(sqlMapClient);
/* 102 */     afterPropertiesSet();
/*     */   }
/*     */ 
/*     */   public SqlMapClientTemplate(DataSource dataSource, SqlMapClient sqlMapClient)
/*     */   {
/* 111 */     setDataSource(dataSource);
/* 112 */     setSqlMapClient(sqlMapClient);
/* 113 */     afterPropertiesSet();
/*     */   }
/*     */ 
/*     */   public void setSqlMapClient(SqlMapClient sqlMapClient)
/*     */   {
/* 120 */     this.sqlMapClient = sqlMapClient;
/*     */   }
/*     */ 
/*     */   public SqlMapClient getSqlMapClient()
/*     */   {
/* 127 */     return this.sqlMapClient;
/*     */   }
/*     */ 
/*     */   public DataSource getDataSource()
/*     */   {
/* 135 */     DataSource ds = super.getDataSource();
/* 136 */     return ds != null   ds : this.sqlMapClient.getDataSource();
/*     */   }
/*     */ 
/*     */   public void afterPropertiesSet() {
/* 140 */     if (this.sqlMapClient == null) {
/* 141 */       throw new IllegalArgumentException("sqlMapClient is required");
/*     */     }
/* 143 */     super.afterPropertiesSet();
/*     */   }
/*     */ 
/*     */   public Object execute(SqlMapClientCallback action)
/*     */     throws DataAccessException
/*     */   {
/* 154 */     Assert.notNull(this.sqlMapClient, "No SqlMapClient specified");
/*     */ 
/* 163 */     SqlMapSession session = this.sqlMapClient.openSession();
/*     */     try {
/* 165 */       Connection con = DataSourceUtils.getConnection(getDataSource());
/*     */       try {
/* 167 */         session.setUserConnection(con);
/* 168 */         Object localObject1 = action.doInSqlMapClient(session);
/*     */ 
/* 174 */         DataSourceUtils.releaseConnection(con, getDataSource());
/*     */ 
/* 178 */         session.close();
/* 179 */         return localObject1;
/*     */       }
/*     */       catch (SQLException ex)
/*     */       {
/* 171 */         throw getExceptionTranslator().translate("Sq
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQLServer中批处理的知识点 下一篇巧用casewhen做SQL优化

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: