Spring 整合HibernateDaoSupport(业务Dao继承CommonDaoImpl)
来源:互联网 发布:中国gis软件 编辑:程序博客网 时间:2024/05/19 22:27
注意:如果业务DAO中的方法名与CommonDAOImpl中的方法名相同 比如save方法 需要使用super.save(Object obj)
1.公共的CommonDAOImpl
2.业务Dao
1.公共的CommonDAOImpl
import java.io.Serializable;import java.math.BigDecimal;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Types;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.hibernate.Filter;import org.hibernate.HibernateException;import org.hibernate.LockMode;import org.hibernate.Query;import org.hibernate.ReplicationMode;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.criterion.DetachedCriteria;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.dao.DataAccessException;import org.springframework.jdbc.support.SQLExceptionTranslator;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;/** * * 通用dao的hibernate实现 * */@SuppressWarnings({"unchecked","deprecation"})@Repository("commonDao")public class CommonDaoImpl extends HibernateDaoSupport implements CommonDao { //下面这个方法挺重要 必须加上 否则报错@Autowiredpublic void setSessionFactoryOverride(SessionFactory sessionFactory){super.setSessionFactory(sessionFactory);}public int executeUpdate(String sql) throws DataAccessException{return getSessionFactory().getCurrentSession().createSQLQuery(sql).executeUpdate();}public int bulkUpdate(String queryString) throws DataAccessException {return getHibernateTemplate().bulkUpdate(queryString);}public int bulkUpdate(String queryString, Object value) throws DataAccessException {return getHibernateTemplate().bulkUpdate(queryString, value);}public int bulkUpdate(String queryString, Object[] values) throws DataAccessException {return getHibernateTemplate().bulkUpdate(queryString, values);}public void clear() throws DataAccessException {getHibernateTemplate().clear();}public void closeIterator(Iterator it) throws DataAccessException {getHibernateTemplate().closeIterator(it);}public boolean contains(Object entity) throws DataAccessException {return getHibernateTemplate().contains(entity);}public void delete(Object entity) throws DataAccessException {getHibernateTemplate().delete(entity);}public void delete(Object entity, LockMode lockMode) throws DataAccessException {getHibernateTemplate().delete(entity, lockMode);}public void deleteAll(Collection entities) throws DataAccessException {getHibernateTemplate().deleteAll(entities);}public Filter enableFilter(String filterName) throws IllegalStateException {return getHibernateTemplate().enableFilter(filterName);}public void evict(Object entity) throws DataAccessException {getHibernateTemplate().evict(entity);}public Object execute(HibernateCallback action) throws DataAccessException {return getHibernateTemplate().execute(action);}public List executeFind(HibernateCallback action) throws DataAccessException {return getHibernateTemplate().executeFind(action);}public List find(String queryString) throws DataAccessException {return getHibernateTemplate().find(queryString);}public List find(String queryString, int rowrows) throws DataAccessException { Session session = this.getSession(); List list = null; try {Query query = session.createQuery(queryString); if(rowrows > 0){query = query.setMaxResults(rowrows);}list = query.list();} catch (HibernateException e) {throw e;} finally{ releaseSession(session); } return list;} public List findIntervalData(String hql, int pageNo, int endNo) { Session session = this.getSession(); List list = null; try { Query query = session.createQuery(hql); if((endNo-pageNo) > 0){ query = query.setFirstResult(pageNo).setMaxResults(endNo); } list = query.list(); } catch (HibernateException e) { throw e; } finally{ releaseSession(session); } return list; }public List find(String queryString, Object value) throws DataAccessException {return getHibernateTemplate().find(queryString, value);}public List find(String queryString, Object[] values) throws DataAccessException {return getHibernateTemplate().find(queryString, values);}public List findByCriteria(DetachedCriteria criteria) throws DataAccessException {return getHibernateTemplate().findByCriteria(criteria);}public List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults)throws DataAccessException {return getHibernateTemplate().findByCriteria(criteria, firstResult, maxResults);}public List findByExample(Object exampleEntity) throws DataAccessException {return getHibernateTemplate().findByExample(exampleEntity);}public List findByExample(Object exampleEntity, int firstResult, int maxResults)throws DataAccessException {return getHibernateTemplate().findByExample(exampleEntity, firstResult, maxResults);}public List findByNamedParam(String queryString, String paramName, Object value)throws DataAccessException {return getHibernateTemplate().findByNamedParam(queryString, paramName, value);}public List findByNamedParam(String queryString, String[] paramNames, Object[] values)throws DataAccessException {return getHibernateTemplate().findByNamedParam(queryString, paramNames, values);}public List findByNamedQuery(String queryName) throws DataAccessException {return getHibernateTemplate().findByNamedQuery(queryName);}public List findByNamedQuery(String queryName, Object value) throws DataAccessException {return getHibernateTemplate().findByNamedQuery(queryName, value);}public List findByNamedQuery(String queryName, Object[] values) throws DataAccessException {return getHibernateTemplate().findByNamedQuery(queryName, values);}public List findByNamedQueryAndNamedParam(String queryName, String paramName, Object value)throws DataAccessException {return getHibernateTemplate().findByNamedQueryAndNamedParam(queryName, paramName, value);}public List findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values)throws DataAccessException {return getHibernateTemplate().findByNamedQueryAndNamedParam(queryName, paramNames, values);}public List findByNamedQueryAndValueBean(String queryName, Object valueBean)throws DataAccessException {return getHibernateTemplate().findByNamedQueryAndValueBean(queryName, valueBean);}public List findByValueBean(String queryString, Object valueBean) throws DataAccessException {return getHibernateTemplate().findByValueBean(queryString, valueBean);}public void flush() throws DataAccessException {getHibernateTemplate().flush();}public Object get(Class entityClass, Serializable id) throws DataAccessException {return getHibernateTemplate().get(entityClass, id);}public Object get(String entityName, Serializable id) throws DataAccessException {return getHibernateTemplate().get(entityName, id);}public Object get(Class entityClass, Serializable id, LockMode lockMode)throws DataAccessException {return getHibernateTemplate().get(entityClass, id, lockMode);}public Object get(String entityName, Serializable id, LockMode lockMode)throws DataAccessException {return getHibernateTemplate().get(entityName, id, lockMode);}public void initialize(Object proxy) throws DataAccessException {getHibernateTemplate().initialize(proxy);}public Iterator iterate(String queryString) throws DataAccessException {return getHibernateTemplate().iterate(queryString);}public Iterator iterate(String queryString, Object value) throws DataAccessException {return getHibernateTemplate().iterate(queryString, value);}public Iterator iterate(String queryString, Object[] values) throws DataAccessException {return getHibernateTemplate().iterate(queryString, values);}public Object load(Class entityClass, Serializable id) throws DataAccessException {return getHibernateTemplate().load(entityClass, id);}public Object load(String entityName, Serializable id) throws DataAccessException {return getHibernateTemplate().load(entityName, id);}public void load(Object entity, Serializable id) throws DataAccessException {getHibernateTemplate().load(entity, id);}public Object load(Class entityClass, Serializable id, LockMode lockMode)throws DataAccessException {return getHibernateTemplate().load(entityClass, id, lockMode);}public Object load(String entityName, Serializable id, LockMode lockMode)throws DataAccessException {return getHibernateTemplate().load(entityName, id, lockMode);}public List loadAll(Class entityClass) throws DataAccessException {return getHibernateTemplate().loadAll(entityClass);}public void lock(Object entity, LockMode lockMode) throws DataAccessException {getHibernateTemplate().lock(entity, lockMode);}public void lock(String entityName, Object entity, LockMode lockMode)throws DataAccessException {getHibernateTemplate().lock(entityName, entity, lockMode);}public Object merge(Object entity) throws DataAccessException {return getHibernateTemplate().merge(entity);}public Object merge(String entityName, Object entity) throws DataAccessException {return getHibernateTemplate().merge(entityName, entity);}public void persist(Object entity) throws DataAccessException {getHibernateTemplate().persist(entity);}public void persist(String entityName, Object entity) throws DataAccessException {getHibernateTemplate().persist(entityName, entity);}public void refresh(Object entity) throws DataAccessException {getHibernateTemplate().refresh(entity);}public void refresh(Object entity, LockMode lockMode) throws DataAccessException {getHibernateTemplate().refresh(entity, lockMode);}public void replicate(Object entity, ReplicationMode replicationMode)throws DataAccessException {getHibernateTemplate().replicate(entity, replicationMode);}public void replicate(String entityName, Object entity, ReplicationMode replicationMode)throws DataAccessException {getHibernateTemplate().replicate(entityName, entity, replicationMode);}public Serializable save(Object entity) throws DataAccessException {return getHibernateTemplate().save(entity);}public Serializable save(String entityName, Object entity) throws DataAccessException {return getHibernateTemplate().save(entityName, entity);}public void saveOrUpdate(Object entity) throws DataAccessException {getHibernateTemplate().saveOrUpdate(entity);}public void saveOrUpdate(String entityName, Object entity) throws DataAccessException {getHibernateTemplate().saveOrUpdate(entityName, entity);}public void saveOrUpdateAll(Collection entities) throws DataAccessException {getHibernateTemplate().saveOrUpdateAll(entities);}public void update(Object entity) throws DataAccessException {getHibernateTemplate().update(entity);}public void update(Object entity, LockMode lockMode) throws DataAccessException {getHibernateTemplate().update(entity, lockMode);}public void update(String entityName, Object entity) throws DataAccessException {getHibernateTemplate().update(entityName, entity);}public void update(String entityName, Object entity, LockMode lockMode)throws DataAccessException {getHibernateTemplate().update(entityName, entity, lockMode);}public List findByExample(String entityName, Object exampleEntity) throws DataAccessException {return getHibernateTemplate().findByExample(entityName, exampleEntity);}public List findByExample(String entityName, Object exampleEntity, int firstResult,int maxResults) throws DataAccessException {return getHibernateTemplate().findByExample(entityName, exampleEntity, firstResult,maxResults);} public BigDecimal getSequence(String sequenceName) throws DataAccessException { Session session = this.getSession(); Query query = null; BigDecimal result = null;try {query = session.createSQLQuery("select " + sequenceName + ".nextval from dual");result = (BigDecimal) query.list().get(0);} catch (HibernateException e) {throw e;}finally{releaseSession(session);} return result; }public void callProcedure(String procedureDefinition, List setParamList, List outParamList) throws DataAccessException {Connection conn = this.getSession().connection(); CallableStatement callableStatement = null; try{ callableStatement = conn.prepareCall(procedureDefinition); if (setParamList != null){ for (int i = 0; i < setParamList.size(); i++){ if (setParamList.get(i) instanceof Long){ callableStatement.setLong(i + 1, (Long) setParamList.get(i)); }else if (setParamList.get(i) instanceof String){ callableStatement.setString(i + 1,(String) setParamList.get(i)); } } } if (outParamList != null){ for (int i = 0; i < outParamList.size(); i++){ if (outParamList.get(i) instanceof Long){ callableStatement.registerOutParameter(setParamList.size() + i + 1, Types.INTEGER); }else if (outParamList.get(i) instanceof String){ callableStatement.registerOutParameter(setParamList.size()+ i + 1, Types.VARCHAR); } } } callableStatement.executeUpdate(); if (outParamList != null){ for (int i = 0; i < outParamList.size(); i++){ if (outParamList.get(i) instanceof Long){ outParamList.set(i, callableStatement.getLong(setParamList.size() + i + 1)); } else if (outParamList.get(i) instanceof String){ outParamList.set(i, callableStatement.getString(setParamList.size() + i + 1)); } } } } catch (SQLException e) { SQLExceptionTranslator translator = getHibernateTemplate().getJdbcExceptionTranslator(); throw translator.translate("", null, e); }finally{ if(callableStatement != null){ try {callableStatement.close();} catch (SQLException e) {e.printStackTrace();} } if(conn != null){ try {conn.close();} catch (SQLException e) {e.printStackTrace();} } } } public int getrowsByCriteria(final DetachedCriteria detachedCriteria) { return -1; } /** * 通用的调用原生SQL * * @param sql sql语句 * @param obj 所对应的参数 * @return List */ public int countNativeSQL(final String sql, final Object[] obj) throws Exception{ //// System.out.println("sql:"+sql); try{ return (Integer) getHibernateTemplate().executeWithNativeSession( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { PreparedStatement st = null; ResultSet rs = null; int result = 0; try { st = session.connection().prepareStatement(sql); if (obj != null) { for (int i = 0; i < obj.length; i++) { //// System.out.println("obj[" + i + "]=" + obj[i]); st.setObject(i + 1, obj[i]); } } rs = st.executeQuery(); while (rs.next()) { result = rs.getInt(1); } } catch (HibernateException ex) { throw ex; } catch (Exception e) { throw new HibernateException(e); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } } return result; } }); } catch (Exception ex) { throw ex; } } /** * 通用的调用原生SQL * * @param sql sql语句 * @param obj 所对应的参数 * @return List */ public boolean execNativeSQL(final String sql, final Object[] obj) throws Exception{ //// System.out.println("sql:"+sql); try{ return (boolean)getHibernateTemplate().executeWithNativeSession( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { PreparedStatement st = null; ResultSet rs = null; boolean result = false; try { st = session.connection().prepareStatement(sql); if (obj != null) { for (int i = 0; i < obj.length; i++) { //// System.out.println("obj[" + i + "]=" + obj[i]); st.setObject(i + 1, obj[i]); } } result = st.execute(); } catch (HibernateException ex) { throw ex; } catch (Exception e) { throw new HibernateException(e); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } } return result; } }); } catch (Exception ex) { throw ex; } } /** * 通用的调用原生SQL * * @param sql sql语句 * @param obj 所对应的参数 * @return List */public List<Map<String, Object>> findNativeSQL(final String sql, final Object[] obj) throws Exception { //// System.out.println("sql:"+sql); try{ return (List) getHibernateTemplate().executeWithNativeSession( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { List resultList = new java.util.ArrayList(); PreparedStatement st=null; ResultSet rs=null; try { st = session.connection() .prepareStatement(sql); if (obj != null) { for (int i = 0; i < obj.length; i++) { //// System.out.println("obj["+i+"]="+obj[i]); st.setObject(i + 1, obj[i]); } } rs = st.executeQuery(); ResultSetMetaData rsm = rs.getMetaData(); if(rs!=null){ while (rs.next()) { Map map = new HashMap(); for (int col = 0; col < rsm.getColumnCount(); col++) { map.put(rsm.getColumnLabel(col + 1) .toLowerCase(), rs .getObject(col + 1)); } resultList.add(map); } } } catch (HibernateException ex) { throw ex; }catch(Exception e){ throw new HibernateException(e); }finally{ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } } return resultList; } }); }catch(Exception ex){ throw ex; } } public void delete(String entityName, Object entity) throws DataAccessException { getHibernateTemplate().delete(entityName, entity); } public void delete(String entityName, Object entity, LockMode lockMode) throws DataAccessException { getHibernateTemplate().delete(entityName, entity, lockMode); } public List<Object[]> findBySqlQuery(final String sql,final Object...paras) throws Exception{ List<Object[]> result = null; Session session = this.getSession(); Query query = session.createSQLQuery(sql);if (paras != null && paras.length > 0) { for (int index = 0; index < paras.length; index++) { query.setParameter(index, paras[index]); }}result = query.list();releaseSession(session);return result; } public Object uniqueResult(final String hql,final Object... paras) { return getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createQuery(hql); query.setMaxResults(1); for (int index = 0; index < paras.length; index++) { query.setParameter(index, paras[index]); } return query.uniqueResult(); } }); }public Object uniqueResultByNativeSql(final String sql,final Object... paras) { return getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createSQLQuery(sql); query.setMaxResults(1); for (int index = 0; index < paras.length; index++) { query.setParameter(index, paras[index]); } return query.uniqueResult(); } }); }/** * 根据原生sql查询dojo的gridx分页 * * @param sql 查询语句 第一个字段为rownumber_,后面为顺序传入的sql中的字段顺序 * @param paras 参数 * @return page data为object数组 * @throws Exception */@SuppressWarnings("rawtypes")public List<Map<String, Object>> findGridByNativeSql(String sql,Object[] paras,int page,int rows) throws Exception{List<Map<String, Object>> list=null;Session session = this.getSession();/*DB2 写法 * String result = sql.replaceFirst("select", "select * from ( select rownumber() over() as rownumber_, ") + ") as temp_ where rownumber_ between "+(page+1)+" and "+(page+rows)+" "; * *//*oracle 写法*/String result = "select * from ( select rownum as rownumber_,tmp_.* from ( "+sql+ ") tmp_ ) temp_ where rownumber_ between "+((page-1)*rows+1)+" and "+(page*rows)+" ";//mysql写法sql//String result = "SELECT * FROM ("+sql+" ) TABLE_PAGE LIMIT "+page+","+rows; //// System.out.println("SQL:"+result);return this.findNativeSQL(result, paras);/*// 查询List listQuery = query.list();Iterator it= listQuery.iterator();while(it.hasNext()){Object[] obj=(Object[]) it.next();int i=0;i=obj.length;HashMap map=new HashMap();for (int j=0;j<i;j++) { map.put(fieldList.get(j), obj[j+1]);}list.add(map);}return list;*/}}
2.业务Dao
import java.util.List;import org.springframework.stereotype.Repository;@Repositorypublic class LoginDaoImpl extends CommonDaoImpl implements LoginDao{@Overridepublic List<?> verify(String username, String password) throws Exception {Object[] values = new Object[] {username.trim(), password.trim()}; return this.findNativeSQL(" select t1.*,t2.deptname from Tuscuser t1 left join tuscdept t2 on t1.deptid = t2.deptid where t1.userid=? and t1.userpassword=? and t1.status='1' ", values);//return commonDao.find("from Tuscuser t1 where t1.userid=? and t1.userpassword=? and t1.status='1' ", values);}@Overridepublic List<?> queryMyAuth(String userid) throws Exception {Object[] values = new Object[] {userid}; return this.findNativeSQL(" select t1.autcode from tuscroleaut t1 join tuscroleuser t2 on t1.roleid = t2.roleid and t2.userid=? group by t1.autcode ", values);}@Overridepublic List<?> queryMyMenu(String userid) throws Exception {Object[] values = new Object[] {userid}; return this.findNativeSQL(" select t1.menuid,t1.parentmenuid,t1.menuname,t1.menucode,t1.menutype,t1.urlcode,t1.iconclass from tcfgmenu t1 where t1.menuid in (select t2.menuid from tuscrolemenu t2,tuscroleuser t3 where t2.roleid = t3.roleid and t3.userid=? group by t2.menuid) order by t1.menucode ", values);}@Overridepublic List<?> queryMenuTitle() throws Exception {return this.find("from Tcfgmenu t1 where t1.menutype='0' order by t1.menucode");}@Overridepublic List<?> queryMyDataAuth(String userid) throws Exception {Object[] values = new Object[] {userid}; return this.findNativeSQL(" select t1.datacode from tuscroledata t1 where t1.roleid in (select roleid from tuscroleuser where userid=? ) group by t1.datacode ", values);}}
0 0
- Spring 整合HibernateDaoSupport(业务Dao继承CommonDaoImpl)
- 继承HibernateDaoSupport实现DAO(spring整合hibernate)
- 继承HibernateDaoSupport实现DAO(spring整合hibernate)
- 继承了HibernateDaoSupport的DAO
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
- SSH中继承HibernateDaoSupport 的通用Dao
- spring与hibernate整合之:继承HibernateDAOSupport方式+理解xml与AutoWired、Resource的区别
- spring与hibernate整合之:继承HibernateDAOSupport方式+理解xml与AutoWired、Resource的区别
- mybatis整合spring(mapper+原始dao)
- mybatis-spring Dao整合
- ssh中dao继承HibernateDaoSupport类实现模板操作
- 关于DAO层的sessionFactory注入和是否继承HibernateDAOSupport
- spring框架使用HibernateDaoSupport整合Hibernate框架
- Spring学习_07_Spring整合Hibernate(HibernateTemplate,HibernateDaoSupport)
- spring与hibernate整合之HibernateDAOSupport
- HibernateDaoSupport详解(增删改查时Dao常用)
- 根据spring 提供的HibernateDaoSupport总结一个通用Dao
- Kettle 调用存储过程
- FreeMind:简单粗暴完成一份思维导图
- corosync + pacemaker+drbd 实现mysql高可用
- 大神
- Kettle 流查询,数据库查询和Merge Join的区别
- Spring 整合HibernateDaoSupport(业务Dao继承CommonDaoImpl)
- 求模运算符的应用(植树问题)
- windows 7 mxnet的安装
- poj3652 Persistent Bits
- Kettle 合并记录和Merge Join组件实现数据增量迁移(数据同步比插入更新快
- The Week Code
- java 各种设计模式学习
- FRP内网穿透
- ubuntu关于端口的命令