package com.company.project.common.base; import java.io.Serializable; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.support.SqlSessionDaoSupport; import cn.org.rapid_framework.page.Page; import cn.org.rapid_framework.page.PageRequest; import cn.org.rapid_framework.util.page.PageList; import com.company.project.common.util.MybatisPageQueryUtils; /** * @author badqiu * @version 1.0 */ public abstract class BaseMybatisDao<E,PK extends Serializable> extends SqlSessionDaoSupport implements EntityDao<E,PK> { protected final Log log = LogFactory.getLog(getClass()); public E getById(PK primaryKey) { return (E)getSqlSession().selectOne(getFindByPrimaryKeyStatement(), primaryKey); } public void deleteById(PK id) { int affectCount = getSqlSession().delete(getDeleteStatement(), id); } public void save(E entity) { prepareObjectForSaveOrUpdate(entity); int affectCount = getSqlSession().insert(getInsertStatement(), entity); } public void update(E entity) { prepareObjectForSaveOrUpdate(entity); int affectCount = getSqlSession().update(getUpdateStatement(), entity); } /** * 用于子类覆盖,在insert,update之前调用 * @param o */ protected void prepareObjectForSaveOrUpdate(E o) { } public String getMybatisMapperNamesapce() { throw new RuntimeException("not yet implement"); } public String getFindByPrimaryKeyStatement() { return getMybatisMapperNamesapce()+".getById"; } public String getInsertStatement() { return getMybatisMapperNamesapce()+".insert"; } public String getUpdateStatement() { return getMybatisMapperNamesapce()+".update"; } public String getDeleteStatement() { return getMybatisMapperNamesapce()+".delete"; } public List findAll() { throw new UnsupportedOperationException(); } public boolean isUnique(E entity, String uniquePropertyNames) { throw new UnsupportedOperationException(); } public void flush() { //ignore } }