ssh开发中的DAO和DaoSupport备份

来源:互联网 发布:网络阅读缺点 编辑:程序博客网 时间:2024/05/22 13:52

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();}}



0 0
原创粉丝点击