WEB層:
// 獲取分頁的請求參數
String start = request.getParameter("start");
String page = request.getParameter("page");
String limit = request.getParameter("limit");
//獲取請求表單的值,然后根據值是否為空,構件離線查詢條件。
String tb_zzid = request.getParameter("tb_zzid");
String zc_xmbh = request.getParameter("zc_xmbh");
String zy_xmbh = request.getParameter("zy_xmbh");
String zc_zcly = request.getParameter("zc_zcly");
DetachedCriteria criteria=DetachedCriteria.forClass(Zyzc.class);
if(tb_zzid !=null && !"".equals(tb_zzid))
{
criteria.add(Restrictions.like("tb_zzid", tb_zzid, MatchMode.ANYWHERE));
}
if(zc_xmbh !=null && !"".equals(zc_xmbh))
{
criteria.add(Restrictions.like("zc_xmbh", zc_xmbh, MatchMode.ANYWHERE));
}
if(zy_xmbh !=null && !"".equals(zy_xmbh))
{
criteria.add(Restrictions.like("zy_xmbh", zy_xmbh, MatchMode.ANYWHERE));
}
if(zc_zcly !=null && !"".equals(zc_zcly))
{
criteria.add(Restrictions.like("zc_zcly", zc_zcly, MatchMode.ANYWHERE));
}
--------------------------------
然后就可以調用service層的方法
//獲取根據離線條件查詢的記錄;
es.getZyzcsByConditonPage( criteria,Integer.parseInt(page), Integer.parseInt(limit))
//獲取根據離線條件查詢的記錄總數;
es.getZyzcCountByCondition(criteria)
---------------------------------------------------------------------------------------------------------
SERVICE層:
//調用DAO層方法
public long getZyzcCountByCondition(DetachedCriteria criteria) {
// TODO Auto-generated method stub
try
{
return zyzcDao.findCountByCondition(criteria);
}
catch (Exception e)
{
e.printStackTrace();
throw new ElecException("獲取發電記錄列表出錯");
}
}
//調用DAO方法獲取記錄總數
public List<Zyzc> getZyzcsByConditonPage(DetachedCriteria criteria, int pageNo, int pageSize)
{
List<Zyzc> result = new ArrayList<Zyzc>();
try
{
List el = zyzcDao.findByConditionPage(criteria, pageNo, pageSize);
for (Object o : el)
{
Zyzc e = (Zyzc)o;
result.add(e);
}
return result;
}
catch (Exception e)
{
e.printStackTrace();
throw new ElecException("獲取發電記錄列表出錯");
}
}
--------------------------------------------------------------------
DAO層:
//繼承hibernate4公共基礎類,獲取session,然后執行離線查詢;
public class ZyzcDAOImpl extends BaseDaoHibernate4<Zyzc> implements ZyzcDAO
{
public List findByConditionPage(DetachedCriteria criteria, int pageNo,int pageSize)
{
Criteria c =criteria.getExecutableCriteria(getSessionFactory().getCurrentSession());
// 執行分頁,並返回查詢結果
return c.setProjection(null)
.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize)
.list();
}
// 獲取查詢記錄結果總數,用於分頁;
public long findCountByCondition(DetachedCriteria criteria)
{
Criteria c =criteria.getExecutableCriteria(getSessionFactory().getCurrentSession());
c.setProjection(Projections.rowCount());
Long totalNum =(Long) c.uniqueResult();
return totalNum;
}
}
----------------------------------------------
結果演示:
未設置任何條件時,顯示記錄總數量;
設置條件后,顯示查詢結果總數。