Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
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;
}
}
----------------------------------------------
结果演示:
未设置任何条件时,显示记录总数量;
设置条件后,显示查询结果总数。
Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询的更多相关文章
- 【java】spring-data-jpa 集成hibernate实现多条件分页查询
初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...
- asp.net mvc多条件+分页查询解决方案
开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...
- thinkphp 带条件分页查询
thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)
ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源, ...
- Hibernate 条件-分页查询
这里我们继续跟着上一次的节奏继续学习Hibernate的查询. 1.条件查询一(占位符) 按照占位符的方式进行条件查询,这里query有一个setInteger(arg1, arg2)方法,其中第一个 ...
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
IIndexDao package com.ucap.netcheck.dao; import com.ucap.netcheck.combination.beans.IndexCombinat ...
- EasyUi+Spring Data 实现按条件分页查询
Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...
- JPA实现复杂条件分页查询
相信熟悉Hibernate的人对于ORM给编程带来的便利于快捷一定不陌生,相对于MyBatis等需要编写复杂的SQL语句,ORM映射为我们带来的便利显而易见.但是,在获得便利的同时,失去的便是灵活性, ...
随机推荐
- Windows核心编程:第5章 作业
Github https://github.com/gongluck/Windows-Core-Program.git //第5章 作业.cpp: 定义应用程序的入口点. // #include &q ...
- UWP Button添加圆角阴影(一)
原文:UWP Button添加圆角阴影(一) 众所周知,17763之前的UWP控件,大部分是没有圆角属性的:而阴影也只有17763中的ThemeShadow可以直接在xaml中使用,之前的版本只能用D ...
- Windows下安装配置爬虫工具Scrapy及爬虫环境
爬虫工具Scrapy在Mac和Linux环境下都相对好装,但是在Windows上总会碰到各种莫名其妙的问题.本文记录下Scrapy在Window上的安装过程. 本文是基于Python2.7及Windo ...
- Android开发 - 获取系统输入法高度的正确姿势
问题与解决 在Android应用的开发中,有一些需求需要我们获取到输入法的高度,但是官方的API并没有提供类似的方法,所以我们需要自己来实现. 查阅了网上很多资料,试过以后都不理想. 比如有的方法通过 ...
- 在Node中使用ES6语法
Node本身已经支持部分ES6语法,但是import export,以及async await(Node 8 已经支持)等一些语法,我们还是无法使用.为了能使用这些新特性,我们就需要使用babel把E ...
- BZOJ 2200--[Usaco2011 Jan]道路和航线(最短路&拓扑排序)
2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1128 Solved: 414[Submit] ...
- 跟着刚哥学习Spring框架--AOP(五)
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...
- 机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化
一.二次代价函数 1. 形式: 其中,C为代价函数,X表示样本,Y表示实际值,a表示输出值,n为样本总数 2. 利用梯度下降法调整权值参数大小,推导过程如下图所示: 根据结果可得,权重w和偏置b的梯度 ...
- Go语言学习笔记(1)——Hello World!
第一个go程序——HelloWorld.go 源码 : package main import ("fmt") // import "fmt" func mai ...
- python的datetime常用方法
把datetime转成字符串 datetime.strftime("%Y-%m-%d-%H") 把字符串转成datetime datetime.strptime(datetime, ...