mybatis 依托SqlSessionTemplate例子

mybatis 依赖SqlSessionTemplate例子
MyBatisDAO :



import java.sql.SQLException;
import java.util.*;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionCallback;
import org.mybatis.spring.SqlSessionTemplate;



public class MyBatisDAO extends BaseDAO {

	protected SqlSessionTemplate sqlSessionTemplate;

	public MyBatisDAO() {
	}

	public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	public void delete(String statementId, Object deleteObject) {
		try {
			sqlSessionTemplate.delete(statementId, deleteObject);
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象删除数据失败,参数列表(statementId:")).append(statementId)
					.append(" deleteObject:").append(deleteObject).append(")")
					.toString(), e);
		}
	}

	public void insert(String statementId, Object insertObject) {
		try {
			sqlSessionTemplate.insert(statementId, insertObject);
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象新增数据失败,参数列表(statementId:")).append(statementId)
					.append(" insertObject:").append(insertObject).append(")")
					.toString(), e);
		}
	}

	public void insert(String statementId, BaseVO entity) {
		try {
			refreshUpdateTime(entity);
			sqlSessionTemplate.insert(statementId, entity);
		} catch (Exception e) {
			throw new DAOException(
					(new StringBuilder("根据参数对象新增数据失败,参数列表(statementId:"))
							.append(statementId).append(" entities:")
							.append(entity).append(")").toString(), e);
		}
	}

	public void insert(final String statementId, final Collection entities) {
		try {
			sqlSessionTemplate.execute(new SqlSessionCallback() {

				final MyBatisDAO this$0;
				private final Collection val$entities;
				private final String val$statementId;

				public Collection doInSqlSession(SqlSession sqlSession)
						throws SQLException {
					BaseVO t;
					for (Iterator iterator = entities.iterator(); iterator
							.hasNext(); sqlSession.insert(statementId, t))
						t = (BaseVO) iterator.next();

					return entities;
				}

				public volatile Object doInSqlSession(SqlSession sqlsession)
						throws SQLException {
					return doInSqlSession(sqlsession);
				}

				{
					this$0 = MyBatisDAO.this;
					entities = collection;
					statementId = s;
					super();
				}
			});
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象批量数据失败,参数列表(statementId:")).append(statementId)
					.append(" entities:").append(entities).append(")")
					.toString(), e);
		}
	}

	public void update(String statementId, Object updateObject) {
		try {
			sqlSessionTemplate.update(statementId, updateObject);
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象更新数据失败,参数列表(statementId:")).append(statementId)
					.append(" updateObject:").append(updateObject).append(")")
					.toString(), e);
		}
	}

	public void update(String statementId, BaseVO entity) {
		try {
			refreshUpdateTime(entity);
			sqlSessionTemplate.update(statementId, entity);
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象更新数据失败,参数列表(statementId:")).append(statementId)
					.append(" entity:").append(entity).append(")").toString(),
					e);
		}
	}

	public void update(final String statementId, final Collection entities) {
		try {
			sqlSessionTemplate.execute(new SqlSessionCallback() {

				final MyBatisDAO this$0;
				private final Collection val$entities;
				private final String val$statementId;

				public Collection doInSqlSession(SqlSession sqlSession)
						throws SQLException {
					BaseVO t;
					for (Iterator iterator = entities.iterator(); iterator
							.hasNext(); sqlSession.update(statementId, t))
						t = (BaseVO) iterator.next();

					return entities;
				}

				public volatile Object doInSqlSession(SqlSession sqlsession)
						throws SQLException {
					return doInSqlSession(sqlsession);
				}

				{
					this$0 = MyBatisDAO.this;
					entities = collection;
					statementId = s;
					super();
				}
			});
		} catch (Exception e) {
			throw new DAOException((new StringBuilder(
					"根据参数对象批量数据失败,参数列表(statementId:")).append(statementId)
					.append(" entities:").append(entities).append(")")
					.toString(), e);
		}
	}

	public Object getObject(String statementId, Object selectParamObject)
	{
		return sqlSessionTemplate.selectOne(statementId, selectParamObject);
		Exception e;
		e;
		throw new DAOException((new StringBuilder("根据参数对象读取数据失败,参数列表(statementId:")).append(statementId).append(" selectParamObject:").append(selectParamObject).append(")").toString(), e);
	}

	public List queryList(String statementId, Object queryParamObject)
	{
		return sqlSessionTemplate.selectList(statementId, queryParamObject);
		Exception e;
		e;
		throw new DAOException((new StringBuilder("查询全部数据失败,参数列表(statementId:")).append(statementId).append(" queryParamObject:").append(queryParamObject).append(")").toString(), e);
	}

	public List queryList(String statementId, Object queryParamObject, int pageNo, int pageSize)
	{
		RowBounds objRowBounds;
		int iOffset = (pageNo - 1) * pageSize;
		objRowBounds = new RowBounds(iOffset, pageSize);
		return sqlSessionTemplate.selectList(statementId, queryParamObject, objRowBounds);
		Exception e;
		e;
		throw new DAOException((new StringBuilder("分页查询全部数据失败,参数列表(statementId:")).append(statementId).append(" queryParamObject:").append(queryParamObject).append(" pageNo:").append(pageNo).append(" pageSize:").append(pageSize).append(")").toString(), e);
	}
}



BaseDAO:

// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   BaseDAO.java


import java.sql.Timestamp;

public abstract class BaseDAO {

	protected static final int OPERATE_BATCH_SIZE = 1000;
	protected static final int STRINGBUFFER_SIZE = 200;
	protected static final int INIT_PAGE_NO = 1;

	public BaseDAO() {
	}

	public void refreshUpdateTime(BaseVO baseVO) {
		baseVO.setUpdateTime(new Timestamp(System.currentTimeMillis()));
	}
}



BaseVO :






import java.io.Serializable;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import javax.persistence.Column;
import org.apache.commons.lang.builder.*;

public class BaseVO implements Serializable {

	protected String _id;
	protected String actionType;
	protected String idList[];
	protected int pageNo;
	protected int pageSize;
	protected String sortFieldName;
	protected String sortType;
	protected int optimisticLockVersion;
	protected Timestamp updateTime;

	public BaseVO() {
		pageNo = 1;
		pageSize = 20;
	}

	public String get_id() {
		return _id;
	}

	public String getActionType() {
		return actionType;
	}

	public String[] getIdList() {
		return idList;
	}

	public int getOptimisticLockVersion() {
		return optimisticLockVersion;
	}

	public int getPageNo() {
		return pageNo;
	}

	public int getPageSize() {
		return pageSize;
	}

	public String getSortFieldName() {
		if (sortFieldName == null)
			return null;
		Field objField = ClassUtil.getFieldByName(getClass(), sortFieldName);
		if (objField == null)
			return null;
		if (objField.isAnnotationPresent(javax / persistence / Column)) {
			Column objColumn = (Column) objField.getAnnotation(javax
					/ persistence / Column);
			return objColumn.name();
		} else {
			return objField.getName();
		}
	}

	public String getSortType() {
		return sortType;
	}

	public Timestamp getUpdateTime() {
		return updateTime;
	}

	public void set_id(String id) {
		_id = id;
	}

	public void setActionType(String actionType) {
		this.actionType = actionType;
	}

	public void setIdList(String idList[]) {
		this.idList = idList;
	}

	public void setOptimisticLockVersion(int optimisticLockVersion) {
		this.optimisticLockVersion = optimisticLockVersion;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public void setSortFieldName(String sortFieldName) {
		this.sortFieldName = sortFieldName;
	}

	public void setSortType(String sortType) {
		this.sortType = sortType;
	}

	public void setUpdateTime(Timestamp updateTime) {
		this.updateTime = updateTime;
	}

	public boolean equals(Object objValue) {
		boolean bEqual = super.equals(objValue);
		if (super.equals(objValue))
			bEqual = true;
		else
			bEqual = EqualsBuilder.reflectionEquals(this, objValue);
		return bEqual;
	}

	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}

	public String toString() {
		return ReflectionToStringBuilder.toString(this,
				ToStringStyle.MULTI_LINE_STYLE);
	}
}