ssh开发中的DAO和DaoSupport备份
生活随笔
收集整理的這篇文章主要介紹了
ssh开发中的DAO和DaoSupport备份
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么80%的碼農(nóng)都做不了架構師?>>> ??
ssh開發(fā)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);/*** 獲取列表,相當于打開某個對象對應的數(shù)據(jù)表* @param <T>* @param entityClass* @return 對象列表*/public <T> List<T> find(Class<T> entityClass);/*** 根據(jù)SQL語句執(zhí)行查詢語句. * 示例:* xxx.find("from bean.User") * 返回所有User對象* @param <T>* @param queryString 完整的查詢語句* @return*/public <T> List<T> find(String queryString);/*** 根據(jù)SQL語句執(zhí)行查詢語句 * 示例:* 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 參數(shù)* @return*/public <T> List<T> find(String queryString, Object value);/*** 根據(jù)SQL語句執(zhí)行查詢語句* 示例:* 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 參數(shù)集合* @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 查詢參數(shù)* @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 查詢參數(shù)集合* @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類的靜態(tài)方法返回值作為參數(shù).* 示例:* 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對象的條數(shù) * @param <T>* @param queryString 查詢語句* @param paramName 參數(shù)名* @param value 參數(shù)* @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 參數(shù)名集合* @param values 參數(shù)值集合* @return*/public <T> List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);/*** 查詢操作* 示例: * 1、首先需要在User.hbm.xml中定義命名查詢 * <hibernate-mapping> * <class>......</class> * <query name="queryAllUser"><!--此查詢被調(diào)用的名字--> * <![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"><!--此查詢被調(diào)用的名字--> * <![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"><!--此查詢被調(diào)用的名字--> * <![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"><!--此查詢被調(diào)用的名字--> * <![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"><!--此查詢被調(diào)用的名字--> * <![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"><!--此查詢被調(diào)用的名字--> * <![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);//分頁查詢////*** 獲取查詢總記錄數(shù)* @param <T>* @param entityClass* @param wheresql* @return*/public <T> long getQueryCount(Class<T> entityClass, String wheresql, Object[] queryParams);/*** 獲取查詢總記錄數(shù)* @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開始計數(shù))* @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* 查詢記錄數(shù)* @param orderby* 排序 key=實體屬性, value=desc/asc* @param wherehql* where語句* @param queryParams* 查詢參數(shù)* @return*/public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstResult, int maxResult, String wherehql, Object[] queryParams,LinkedHashMap<String, String> orderby);/*** 獲取分頁數(shù)據(jù)* * @param <T>* @param entityClass* 實體類* @param firstIndex* 第一條記錄位置* @param maxResult* 查詢記錄數(shù)* @param wherehql* where語句* @param queryParams* 查詢參數(shù)* @return*/public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstIndex, int maxResult, String wherehql, Object[] queryParams);/*** 獲取分頁數(shù)據(jù)* * @param <T>* @param entityClass* 實體類* @param firstIndex* 第一條記錄位置* @param maxResult* 查詢記錄數(shù)* @param orderby* 排序 key=實體屬性, value=desc/asc* @return*/public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstIndex, int maxResult, LinkedHashMap<String, String> orderby);/*** 獲取分頁數(shù)據(jù)* * @param <T>* @param entityClass* 實體類* @param firstIndex* 第一條記錄位置* @param maxResult* 查詢記錄數(shù)* @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);/*** 執(zhí)行HQL語句* @param hql*/public void executeHQL(String hql) ;/*** 執(zhí)行HQL語句* @param hql* @param params*/public void executeHQL(String hql, Object[] params) ;public void backUpDB(); }ssh中的繼承HibernateDaoSupport并實現(xiàn)Dao的接口代碼:
轉(zhuǎn)載于:https://my.oschina.net/zjcx/blog/679552
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ssh开发中的DAO和DaoSupport备份的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Azure手把手系列 1:微软中国公有云
- 下一篇: Java对于SSL的支持以及证书的安装!