文档章节

ssh开发中的DAO和DaoSupport备份

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



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

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 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 ⋅ 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 ⋅ 1

Java 的 DAO 工具--DaoSupport

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

只是傻傻笑 ⋅ 2014/08/20 ⋅ 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 ⋅ 3

Spring与Mybatis整合的MapperScannerConfigurer

本文将分析mybatis与spring整合的MapperScannerConfigurer的底层原理,之前已经分析过Java中实现动态,可以使用jdk自带api和cglib第三方库生成动态代理。本文分析的mybatis版本3.2.7,mybat...

tantexian ⋅ 2016/04/07 ⋅ 0

JavaEE开发框架--JEasyFrame

JEasyFrame 一款基于SSH的轻量级JavaEE开发框架 JEasyFrame的主要特点: jeasyframe是基于SSH框架编写的,所以在框架内可以使用SSH的所有东西. 开发jeasyframe的初衷就是为了简化ssh开发的代码...

周老兽 ⋅ 2013/07/12 ⋅ 2

spring 集成mybatis动态设置数据源,实现读写分离

由于业务需要,需要用到读写分离,但是现在一些现有的中间件满足不了我们现在复杂的业务逻辑,只有自己在spring里面搞,幸好有官方代码。通常 spring集成mybatis的集成方式: 关于具体配置就...

四月李 ⋅ 2016/08/26 ⋅ 0

mybatis+spring tomcat启动时报错Mapped Statements collection already contains value for com.**.insertMenu!selectKey

Caused by: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.rx.mapper.SecurityMapper.insertMen......

_源代码_ ⋅ 2013/02/22 ⋅ 1

关于整合ssh时候的一个错误。

2012-9-21 13:37:23 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environment......

Secret ⋅ 2012/09/21 ⋅ 3

MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一)

(本文示例完整源代码与数据库脚本下载地址:http://down.51cto.com/data/1970833) 在MyBatis中,当我们编写好访问数据库的映射器接口后,MapperScannerConfigurer就能自动成批地帮助我们根...

NashMaster2011 ⋅ 2015/01/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的...

edwardGe ⋅ 3分钟前 ⋅ 0

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html

BobwithB ⋅ 8分钟前 ⋅ 0

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋...

晨猫 ⋅ 8分钟前 ⋅ 0

c++智能指针

1、是一种泛型类,针对指针类型的泛型类,会保存指针 2、重载了符号 *和-> 对智能指针使用这两个符号,相当于对保存的泛型使用这两个符号 3、当智能指针引用计数为0时,会去释放指针指向的资...

国仔饼 ⋅ 9分钟前 ⋅ 0

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAut...

小致dad ⋅ 11分钟前 ⋅ 0

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。

sskill ⋅ 15分钟前 ⋅ 0

Unity 围绕旋转角度限制(Transform.RotateAround)

在 Unity 中可以利用 Transform.RotateAround 围绕指定物体进行旋转,但某些情况下可能需要对旋转角度进行控制。我是先计算出预设角度大小,然后判断是否在限定角度范围内是则进行旋转。 相关...

大轩 ⋅ 16分钟前 ⋅ 0

阿里沙箱环境支付宝测试demo

阿里支付宝支付和微信支付,包括:阿里沙箱环境支付宝测试demo,支付宝支付整合到spring+springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需要修改对应的配置文件即可,帮助文档...

码代码的小司机 ⋅ 19分钟前 ⋅ 0

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 36分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 40分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部