ssh开发中的DAO和DaoSupport备份
ssh开发中的DAO和DaoSupport备份
指尖残雪 发表于2年前
ssh开发中的DAO和DaoSupport备份
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 2
  • 评论 0

ssh开发base包中的Dao代码:

package com.base;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;


public interface DAO {
	
	/**
	 * 加载一个实体
	 * @param <T>
	 * @param entityClass
	 * @param entityid 主键
	 * @return
	 */
	public <T> T load(Class<T> entityClass, Serializable entityid) ;
	
	/**
	 * 增加或修改实体
	 * @param <T>
	 * @param entity 实体
	 * @return
	 */
	public <T> T saveOrUpdate(T entity);
	/**
	 * 保存指定实体
	 * @param entity  实体
	 */
	public <T> T save(T entity);

	/**
	 * 批量保存指定的实体集合
	 * @param <T>
	 * @param entities 实体集和
	 * @return
	 */
	public <T> Collection<T> save(Collection<T> entities);

	/**
	 * 删除指定实体
	 * @param <T>
	 * @param entity 实体
	 */
	public <T> T delete(T entity);

	/**
	 * 批量删除指定的实体集合
	 * @param <T>
	 * @param entities 实体集合
	 */
	public <T> Collection<T> delete(Collection<T> entities);

	/**
	 * 更新指定操作
	 * @param entity 实体
	 */
	public <T> T update(T entity);

	/**
	 * 获取指定id的实体
	 * @param <T>
	 * @param entityClass
	 * @param entityid 实体的主键
	 * @return
	 */
	public <T> T get(Class<T> entityClass, Serializable entityid);

	/**
	 * 获取列表,相当于打开某个对象对应的数据表
	 * @param <T>
	 * @param entityClass
	 * @return  对象列表
	 */
	public <T> List<T> find(Class<T> entityClass);
	/**
	 * 根据SQL语句执行查询语句. 
	 * 示例:
	 * 		xxx.find("from bean.User") 
	 * 		返回所有User对象
	 * @param <T>
	 * @param queryString 完整的查询语句
	 * @return
	 */
	public <T> List<T> find(String queryString);

	/**
	 * 根据SQL语句执行查询语句 
	 * 示例:
	 * 		xxx.find("from bean.User o where o.name=?","test");
	 * 		或模糊查询:
	 * 		xxx.find("from bean.User o where o.name like ?", "%test%");
	 * 		返回name属性值为test的对象(模糊查询, 返回name属性值包含test的对象)
	 * @param <T>
	 * @param queryString 完整的查询语句
	 * @param value 参数
	 * @return
	 */
	public <T> List<T> find(String queryString, Object value);

	/**
	 * 根据SQL语句执行查询语句
	 * 示例:
	 * 		String hql= "from bean.User u where u.name=? and u.password=?" 
	 * 		xxx.find(hql, new String[]{"test", "123"});
	 * 		返回用户名为test并且密码为123的所有User对象
	 * @param <T>
	 * @param queryString 完整的查询语句
	 * @param values 参数集合
	 * @return
	 */
	public <T> List<T> find(String queryString, Object[] values);

	public <T> List<T> find(Class<T> entityClass, String wherehql);
	
	/**
	 * 查询操作
	 * 示例:
	 * 		XXXService.find(Entity.class, "where o.property1=?", newObject[]{1});
	 * @param <T>
	 * @param entityClass 实体类
	 * @param wherehql 部分条件语句
	 * @param queryParam 查询参数
	 * @return
	 */
	public <T> List<T> find(Class<T> entityClass, String wherehql, Object queryParam);

	/**
	 * 查询操作
	 * 示例:
	 * 		XXXService.find(Entity.class,"where o.property1=? and o.property2=?", new Object[]{1, 2});
	 * @param <T>
	 * @param entityClass 实体类
	 * @param wherehql 条件语句
	 * @param queryParams 查询参数集合
	 * @return
	 */
	public <T> List<T> find(Class<T> entityClass, String wherehql, Object[] queryParams);

	/**
	 * 查询操作
	 * 示例: 
	 * 		User u=new User();    
	 *      u.setPassword("123");//必须 符合的条件但是这两个条件时并列的(象当于sql中的and)    
	 *      u.setName("bb");    
	 *      list=this.getHibernateTemplate().findByExample(u,start,max);  
	 *      返回:用户名为bb密码为123的对象 
	 * @param <T>
	 * @param exampleEntity
	 * @return
	 */
	public <T> List<T> findByExample(T exampleEntity);
	
	/**
	 * 查询操作
	 * 示例:
	 * 		HibernateTemplate ht=this.getHibernateTemplate();
	 * 		DetachedCriteria criteria=DetachedCriteria.forClass(Paper.class);
	 * 		ht.findByCriteria(criteria);
	 * criteria可以使用add()方法添加我们需要的查询条件,就好比SQL语句中的where条件语句
	 * 而add()方法可以使用Restrictions类的静态方法返回值作为参数.
	 * 示例:
	 * 		criteria.add(Restrictions.in("TExams", examsList)).add(Restrictions.eq("patype", 0));
	 * @param <T>
	 * @param entityClass
	 * @param criteria
	 * @return
	 */
	public <T> List<T> findByCriteria(Class<T> entityClass, DetachedCriteria criteria);

	/**
	 * 查询操作
	 * 使用以下语句查询: 
	 * String queryString = "select count(*) from bean.User u where u.name=:myName"; 
	 * String paramName= "myName"; 
	 * String value= "xiyue"; 
	 * this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 
	 * System.out.println(list.get(0)); 
	 * 返回name为xiyue的User对象的条数 
	 * @param <T>
	 * @param queryString 查询语句
	 * @param paramName 参数名
	 * @param value 参数
	 * @return
	 */
	public <T> List<T> findByNamedParam(String queryString, String paramName, Object value);

	/**
	 * 查询操作
	 * 示例: 
	 *   String queryString = "select count(*) from bean.User u where u.name=:myName and u.password=:myPassword"; 
	 *   String[] paramName= new String[]{"myName", "myPassword"}; 
	 *   String[] value= new String[]{"xiyue", "123"}; 
	 *   this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 
	 *   返回用户名为xiyue密码为123的User对象 
	 * @param <T>
	 * @param queryString 查询语句
	 * @param paramNames 参数名集合
	 * @param values 参数值集合
	 * @return
	 */
	public <T> List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);

	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 *	 			<class>......</class> 
	 * 				<query name="queryAllUser"><!--此查询被调用的名字--> 
	 *  			<![CDATA[ 
	 *  				from bean.User 
	 *  			]]> 
	 *  			</query> 
	 *  		</hibernate-mapping> 
	 *  2、如下使用查询: 
	 *   	this.getHibernateTemplate().findByNamedQuery("queryAllUser"); 
	 * @param <T>
	 * @param queryName
	 * @return
	 */
	public <T> List<T> findByNamedQuery(String queryName);

	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 *	 			<class>......</class> 
	 * 				<query name="queryByName"><!--此查询被调用的名字--> 
	 *  			<![CDATA[ 
	 *  				 from bean.User u where u.name = ?  
	 *  			]]> 
	 *  			</query> 
	 *  		</hibernate-mapping> 
	 * 		2、如下使用查询: 
	 *   		this.getHibernateTemplate().findByNamedQuery("queryByName", "test"); 
	 * @param <T>
	 * @param queryName
	 * @param value
	 * @return
	 */
	public <T> List<T> findByNamedQuery(String queryName, Object value);

	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 *	 			<class>......</class> 
	 * 				<query name="queryByNameAndPassword"><!--此查询被调用的名字--> 
	 *  			<![CDATA[ 
	 *  				  from bean.User u where u.name =? and u.password =?
	 *  			]]> 
	 *  			</query> 
	 *  		</hibernate-mapping> 
	 * 		2、如下使用查询: 
	 * 			String[] values= new String[]{"test", "123"}; 
	 *   		this.getHibernateTemplate().findByNamedQuery("queryByNameAndPassword" , values); 
	 * @param <T>
	 * @param queryName
	 * @param value
	 * @return
	 */
	public <T> List<T> findByNamedQuery(String queryName, Object[] values);

	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 *	 			<class>......</class> 
	 * 				<query name="queryByName"><!--此查询被调用的名字--> 
	 *  			<![CDATA[ 
	 *  				  from bean.User u where u.name =:myName 
	 *  			]]> 
	 *  			</query> 
	 *  		</hibernate-mapping> 
	 * 		2、如下使用查询: 
	 *   		 this.getHibernateTemplate().findByNamedQuery("queryByName" , "myName", "test"); 
	 * @param <T>
	 * @param queryName
	 * @param value
	 * @return
	 */
	public <T> List<T> findByNamedQueryAndNamedParam(String queryName, String paramName, Object value);

	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 *	 			<class>......</class> 
	 * 				<query name="queryByNameAndPassword"><!--此查询被调用的名字--> 
	 *  			<![CDATA[ 
	 *  				  from bean.User u where u.name =:myName and u.password=:myPassword 
	 *  			]]> 
	 *  			</query> 
	 *  		</hibernate-mapping> 
	 * 		2、如下使用查询: 
	 * 		     String[] names= new String[]{"myName", "myPassword"}; 
	 * 			 String[] values= new String[]{"test", "123"}; 
	 *   		 this.getHibernateTemplate().findByNamedQuery("queryByNameAndPassword" , names, values);  
	 * @param <T>
	 * @param queryName
	 * @param value
	 * @return
	 */
	public <T> List<T> findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values);
	
	/**
	 * 查询操作
	 * 示例: 
	 * 		1、定义一个ValueBean, 属性名必须和HSQL语句中的:后面的变量名同名, 
	 * 	          此处必须至少有两个属性, 分别为myName和myPassword, 使用setter方法设置属性值后 
	 * 			ValueBean valueBean= new ValueBean(); 
	 * 			valueBean.setMyName("test"); 
	 * 			valueBean.setMyPasswrod("123"); 
	 * 		2、 
	 * 			String queryString= "from bean.User u where u.name=:myName and u.password=:myPassword"; 
	 * 			this.getHibernateTemplate().findByValueBean(queryString , valueBean);
	 * @param <T>
	 * @param queryString
	 * @param value
	 * @return
	 */
	public <T> List<T> findByValueBean(String queryString , Object valueBean); 
	
	/**
	 * 查询操作
	 * 示例: 
	 * 		1、首先需要在User.hbm.xml中定义命名查询 
	 * 			<hibernate-mapping> 
	 * 				<class>......</class> 
	 * 				<query name="queryByNameAndPassword"><!--此查询被调用的名字--> 
	 * 					<![CDATA[ 
	 * 						from bean.User u where u.name =:myName and u.password=:myPassword 
	 * 					]]> 
	 * 				</query> 
	 * 			</hibernate-mapping> 
	 *  	2、定义一个ValueBean, 属性名必须和User.hbm.xml命名查询语句中的:
	 *  	后面的变量名同名, 此处必须至少有两个属性, 分别为myName和myPassword, 使用setter方法设置属性值后 
	 *  		ValueBean valueBean= new ValueBean(); 
	 *  		valueBean.setMyName("test"); 
	 *  		valueBean.setMyPasswrod("123"); 
	 *  	3、 
	 *  		String queryString= "from bean.User u where u.name=:myName and u.password=:myPassword"; 
	 *  		this.getHibernateTemplate().findByNamedQueryAndValueBean("queryByNameAndPassword", valueBean);
	 * @param <T>
	 * @param queryName
	 * @param value
	 * @return
	 */
	public <T> List<T> findByNamedQueryAndValueBean(String queryName, Object valueBean);
	
	
	//////////////////////////////////////////////分页查询///////////////////////////////////////////////
	/**
	 * 获取查询总记录数
	 * @param <T>
	 * @param entityClass
	 * @param wheresql
	 * @return
	 */
	public <T> long getQueryCount(Class<T> entityClass, String wheresql, Object[] queryParams);
	
	/**
	 * 获取查询总记录数
	 * @param <T>
	 * @param entityClass
	 * @param criteria
	 * @return
	 */
	public <T> long getQueryCount(Class<T> entityClass, DetachedCriteria criteria);
	
	/**
	 * 分页查询
	 * @param <T>
	 * @param criteria
	 * @param firstResult
	 * @param maxResults
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(DetachedCriteria criteria, int firstResult, int maxResults);
	

	/**
	 * 分页查询, 无法排序
	 * 示例: 
	 * 		User u=new User();    
	 * 		u.setPassword("123");//必须 符合的条件但是这两个条件时并列的(象当于sql中的and)    
	 * 		u.setName("bb");    
	 * 		list=this.getHibernateTemplate().findByExample(u,start,max);    
	 * 		返回:满足用户名为bb密码为123,自start起共max个User对象。(对象从0开始计数)
	 * @param <T>
	 * @param exampleEntity
	 * @param firstResult
	 * @param maxResults
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(T exampleEntity, int firstResult, int maxResults);

	/**
	 * 分页查询.
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体类
	 * @param firstIndex
	 *            第一条记录位置
	 * @param maxResult
	 *            查询记录数
	 * @param orderby
	 *            排序 key=实体属性, value=desc/asc
	 * @param wherehql
	 *            where语句
	 * @param queryParams
	 *            查询参数
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstResult, int maxResult, String wherehql, Object[] queryParams,
			LinkedHashMap<String, String> orderby);

	/**
	 * 获取分页数据
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体类
	 * @param firstIndex
	 *            第一条记录位置
	 * @param maxResult
	 *            查询记录数
	 * @param wherehql
	 *            where语句
	 * @param queryParams
	 *            查询参数
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstIndex, int maxResult, String wherehql, Object[] queryParams);

	/**
	 * 获取分页数据
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体类
	 * @param firstIndex
	 *            第一条记录位置
	 * @param maxResult
	 *            查询记录数
	 * @param orderby
	 *            排序 key=实体属性, value=desc/asc
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstIndex, int maxResult, LinkedHashMap<String, String> orderby);

	/**
	 * 获取分页数据
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体类
	 * @param firstIndex
	 *            第一条记录位置
	 * @param maxResult
	 *            查询记录数
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstIndex, int maxResult);

	/**
	 * 获取全部
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体类
	 * @return
	 */
	public <T> QueryResult<T> getScrollData(Class<T> entityClass);
	
	/**
	 * 执行HQL语句
	 * @param hql
	 */
	public void executeHQL(String hql) ;
	
	/**
	 * 执行HQL语句
	 * @param hql
	 * @param params
	 */
	public void executeHQL(String hql, Object[] params) ;
	
	public void backUpDB();
}

ssh中的继承HibernateDaoSupport并实现Dao的接口代码:


package com.base;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

import javax.persistence.Entity;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public abstract class DaoSupport extends HibernateDaoSupport implements DAO {

	public <T> T load(Class<T> entityClass, Serializable entityid) {
		return (T) this.getHibernateTemplate().load(entityClass, entityid);
	}

	public <T> T saveOrUpdate(T entity) {
		this.getHibernateTemplate().saveOrUpdate(entity);
		return entity;
	}

	public <T> Collection<T> delete(Collection<T> entities) {
		this.getHibernateTemplate().deleteAll(entities);
		return entities;
	}

	public <T> T delete(T entity) {
		this.getHibernateTemplate().delete(entity);
		return entity;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(Class<T> entityClass, String wherehql) {
		StringBuffer hql = new StringBuffer("from "
				+ this.getEntityName(entityClass) + " o ");
		hql.append(wherehql);
		List<T> list = this.getHibernateTemplate().find(hql.toString());
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(Class<T> entityClass, String wherehql,
			Object queryParam) {
		StringBuffer hql = new StringBuffer("from "
				+ this.getEntityName(entityClass) + " o ");
		hql.append(wherehql);
		List<T> list = this.getHibernateTemplate().find(hql.toString(),
				queryParam);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(Class<T> entityClass, String wherehql,
			Object[] queryParams) {
		StringBuffer hql = new StringBuffer("from "
				+ this.getEntityName(entityClass) + " o ");
		hql.append(wherehql);
		List<T> list = this.getHibernateTemplate().find(hql.toString(),
				queryParams);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(String queryString, Object value) {
		List<T> list = this.getHibernateTemplate().find(queryString, value);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(String queryString, Object[] values) {
		List<T> list = this.getHibernateTemplate().find(queryString, values);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(String queryString) {
		List<T> list = this.getHibernateTemplate().find(queryString);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> find(Class<T> entityClass) {
		StringBuffer hql = new StringBuffer("from "
				+ this.getEntityName(entityClass));
		List<T> list = this.getHibernateTemplate().find(hql.toString());
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByCriteria(Class<T> entityClass,
			DetachedCriteria criteria) {
		List<T> list = this.getHibernateTemplate().findByCriteria(criteria);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByExample(T exampleEntity) {
		List<T> list = this.getHibernateTemplate().findByExample(exampleEntity);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedParam(String queryString, String paramName,
			Object value) {
		List<T> list = this.getHibernateTemplate().findByNamedParam(
				queryString, paramName, value);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedParam(String queryString,
			String[] paramNames, Object[] values) {
		List<T> list = this.getHibernateTemplate().findByNamedParam(
				queryString, paramNames, values);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQuery(String queryName, Object value) {
		List<T> list = this.getHibernateTemplate().findByNamedQuery(queryName,
				value);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQuery(String queryName, Object[] values) {
		List<T> list = this.getHibernateTemplate().findByNamedQuery(queryName,
				values);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQuery(String queryName) {
		List<T> list = this.getHibernateTemplate().findByNamedQuery(queryName);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQueryAndNamedParam(String queryName,
			String paramName, Object value) {
		List<T> list = this.getHibernateTemplate()
				.findByNamedQueryAndNamedParam(queryName, paramName, value);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQueryAndNamedParam(String queryName,
			String[] paramNames, Object[] values) {
		List<T> list = this.getHibernateTemplate()
				.findByNamedQueryAndNamedParam(queryName, paramNames, values);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByNamedQueryAndValueBean(String queryName,
			Object valueBean) {
		List<T> list = this.getHibernateTemplate()
				.findByNamedQueryAndValueBean(queryName, valueBean);
		return list;
	}

	@SuppressWarnings("unchecked")
	public <T> List<T> findByValueBean(String queryString, Object valueBean) {
		List<T> list = this.getHibernateTemplate().findByValueBean(queryString,
				valueBean);
		return list;
	}

	public <T> T get(Class<T> entityClass, Serializable entityid) {
		return (T) this.getHibernateTemplate().get(entityClass, entityid);
	}

	public <T> long getQueryCount(Class<T> entityClass, String wheresql,
			Object[] queryParams) {
		Session session = this.getSession();
		Query query = session.createQuery("select count(*) from "
				+ this.getEntityName(entityClass) + " o "
				+ (wheresql == null ? "" : wheresql));
		this.setQueryParams(query, queryParams);
		Long result = (Long) query.uniqueResult();
		return result;
	}

	public <T> long getQueryCount(Class<T> entityClass,
			DetachedCriteria detachedCriteria) {
		Criteria criteria = detachedCriteria.getExecutableCriteria(this
				.getSession());
		int totalCount = ((Integer) criteria.setProjection(
				Projections.rowCount()).uniqueResult()).intValue();
		return new Long(totalCount);
	}

	public <T> QueryResult<T> getScrollData(Class<T> entityClass,
			int firstIndex, int maxResult, LinkedHashMap<String, String> orderby) {
		return this.getScrollData(entityClass, firstIndex, maxResult, null,
				null, orderby);
	}

	@SuppressWarnings("unchecked")
	public <T> QueryResult<T> getScrollData(Class<T> entityClass,
			int firstResult, int maxResult, String wherehql,
			Object[] queryParams, LinkedHashMap<String, String> orderby) {

		Session session = this.getSession();
		QueryResult<T> qr = new QueryResult<T>();
		String entityName = this.getEntityName(entityClass);

		Query query = session.createQuery("select o from " + entityName + " o "
				+ (wherehql == null ? "" : wherehql)
				+ this.buildOrderby(orderby));

		// 分页查询
		if (-1 != firstResult && -1 != maxResult)
			query.setFirstResult(firstResult).setMaxResults(maxResult);

		// else, 否则查询全部
		this.setQueryParams(query, queryParams);
		List<T> list = query.list();
		qr.setResultList(list);

		return qr;
	}

	public <T> QueryResult<T> getScrollData(Class<T> entityClass,
			int firstIndex, int maxResult, String wherehql, Object[] queryParams) {
		return this.getScrollData(entityClass, firstIndex, maxResult, wherehql,
				queryParams, null);
	}

	public <T> QueryResult<T> getScrollData(Class<T> entityClass,
			int firstIndex, int maxResult) {
		return this.getScrollData(entityClass, firstIndex, maxResult, null);
	}

	public <T> QueryResult<T> getScrollData(Class<T> entityClass) {
		return this.getScrollData(entityClass, -1, -1);
	}

	@SuppressWarnings("unchecked")
	public <T> QueryResult<T> getScrollData(DetachedCriteria criteria,
			int firstResult, int maxResults) {
		QueryResult<T> result = new QueryResult<T>();
		List<T> list = this.getHibernateTemplate().findByCriteria(criteria,
				firstResult, maxResults);
		result.setResultList(list);
		return result;
	}

	@SuppressWarnings("unchecked")
	public <T> QueryResult<T> getScrollData(T exampleEntity, int firstResult,
			int maxResults) {
		QueryResult<T> result = new QueryResult<T>();
		List<T> list = this.getHibernateTemplate().findByExample(exampleEntity,
				firstResult, maxResults);
		result.setResultList(list);
		return result;
	}

	public <T> Collection<T> save(Collection<T> entities) {
		this.getHibernateTemplate().saveOrUpdateAll(entities);
		return entities;
	}

	public <T> T save(T entity) {
		this.getHibernateTemplate().save(entity);
		return entity;
	}

	public <T> T update(T entity) {
		this.getHibernateTemplate().update(entity);
		return entity;
	}

	public void executeHQL(String hql) {
		this.executeHQL(hql, null);
	}

	public void executeHQL(String hql, Object[] params) {
		Session session = this.getSession();
		Query query = session.createQuery(hql);
		if (null != params)
			this.setQueryParams(query, params);
		query.executeUpdate();
	}

	/**
	 * 获取实体名称
	 * 
	 * @param <T>
	 * @param entityClass
	 *            实体�?
	 * @return
	 */
	protected <T> String getEntityName(Class<T> entityClass) {
		String entityName = entityClass.getSimpleName();
		Entity entity = entityClass.getAnnotation(Entity.class);
		if (entity != null && entity.name() != null && entity.name().isEmpty()) {
			entityName = entity.name();
		}
		return entityName;
	}

	/**
	 * 组装order by语句
	 * 
	 * @param orderby
	 * @return
	 */
	protected String buildOrderby(LinkedHashMap<String, String> orderby) {
		StringBuffer orderbysql = new StringBuffer();
		if (null != orderby && orderby.size() > 0) {
			orderbysql.append(" order by ");
			for (String key : orderby.keySet()) {
				orderbysql.append("o.").append(key).append(" ")
						.append(orderby.get(key)).append(",");
			}
			orderbysql.deleteCharAt(orderbysql.length() - 1);
		}
		return orderbysql.toString();
	}

	/**
	 * 设置查询参数
	 * 
	 * @param query
	 * @param queryParams
	 */
	protected void setQueryParams(Query query, Object[] queryParams) {
		if (null != queryParams && queryParams.length > 0) {
			for (int i = 0; i < queryParams.length; i++) {
				query.setParameter(i, queryParams[i]);
			}
		}
	}

	public void backUpDB() {
		String sql = "BACKUP DATABASE wspj TO DISK ='C:/wspj.bak' with init";
		this.getSession().createSQLQuery(sql).executeUpdate();
	}
}



共有 人打赏支持
粉丝 8
博文 73
码字总数 0
×
指尖残雪
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: