文档章节

ssh开发中的DAO和DaoSupport备份

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 2953
阅读 5
收藏 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();
	}
}



本文转载自:http://blog.csdn.net/bq1073100909/article/details/39135227

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
私信 提问
说说 Spring 的数据访问模板

1 使用 JDBC 进行数据访问 下面是一段典型的使用 JDBC 进行数据访问操作的代码,我们已经尽可能地对代码进行了精简: 如以上所示, JDBC 执行数据访问操作的流程是这样的: 准备资源; 启动事...

deniro
前天
0
0
sqlite数据库不支持savepoint,使用事务的时候出错

org.nutz.dao.DaoException: java.sql.SQLException: unsupported by SQLite: savepoints at org.nutz.dao.impl.sql.run.NutDaoRunner.run(NutDaoRunner.java:50) ~[nutz-1.b.52.jar:na] at ......

chengjie
2015/05/12
225
1
nutz在启动时有权限问题,不知道在什么地方配置?

直接贴错误日志吧: ALL Nutz Log via Log4jLogAdapter 1167 [main] INFO org.nutz.log.Logs - Nutz is licensed under the Apache License, Version 2.0 . Report bugs : https://github.co......

老程
2015/09/08
750
1
Java 的 DAO 工具--DaoSupport

java Dao(data access object)封装 简单方便 节省时间. 使用java对数据访问对象层做的一层封装,适合数据库为mysql. 让DaoSupport来帮你管理Dao。 开源供有兴趣者一起学习,一切商业问题概不负...

只是傻傻笑
2014/08/20
898
1
ssh整合,测试service和dao遇见的错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in class path resource [spring/applicationContext-person.xml]: Inv......

halou_you
2012/09/24
317
3

没有更多内容

加载失败,请刷新页面

加载更多

solr使用规范

0. 目的 规范solr设计、用法,避免bug,提高性能 1. 设计规范 solr的用途是查询,不是存储,建议查询结果尽量都为id主键,而后再拿该id主键到缓存或者db中再查询相关信息,例如:请勿将经销商...

andersChow
22分钟前
1
0
11-《深度拆解JVM》之Java对象的内存布局

一、问题引入 在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对...

飞鱼说编程
27分钟前
1
0
Windows Install Docker

win7、win8 win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker toolbox...

linuxprobe16
31分钟前
1
0
混合云环境中扩展Kubernetes的挑战及方案

流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kubernetes扩展。 引 言 假设您的业务是在线的:您...

RancherLabs
39分钟前
1
0
Java集合小抄

Java集合小抄 1. List 1.1 ArrayList 以数组实现。节约空间,但是数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组。因此最好能给出数组大小的预估值。默认第一...

傅小水water
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部