工作笔记—hibernate之QueryCriteria
本人用的是sg-uap虚拟环境
//查询方法
//参数 RequestCondition 配合 controller 的 @QueryRequestParam注解可以将前台传入整个对象进行接收
//参数 UserSession 当前登录的用户信息
//obj 实体类
public QueryResultObject query(RequestCondition queryCondition,UserSession userSession){ QueryCriteria qc = new QueryCriteria;
//查询集合
List<obj> result = null;
//查询记录总数
int count = 0;
//查询条件
qc.addWhere("","数据库字段名","=","值");
//查询表
qc.addFrom(obj.class)
//其他的判断条件
if(queryCondition != null){
//添加其他查询条件
qc = wrapQuery(queryCondition,qc);
//获取总记录数
count = getRecordCount(qc);
//添加分页信息
qc = wrapPage(queryCondition,qc);
result = hibernateDao.findAllByCriteria(qc);
}else{
result = hibernateDao.findAllByCriteria(qc);
count = getRecordCount(qc);
}
return 封装对象返回
}
public QueryCriteria wrapQuery(QueryCriteria qc,RequestCondition queryCondition ){ List<QueryFilter> wheres = queryCondition.getQueryFilter(obj.class);
if(wheres != null && wheres.size() > 0){
//模糊查询
for(int i = 0;i<wheres.size();i++){
QueryFilter q = wheres.get(i);
if("对象属性".equals(q.getFieldName)){
//设置此属性的模糊查询
q.setOperator("^");
}
//排序
qc.addOrder("排序字段","排序规则");
//构造查询where语句
CrudUtils.addQCWhere(qc,Wheres,Obj.class.getName());
}
String orders = queryCondition.getSorter();
//替换分隔符构建排序语句
if(orders != null){
qc.addOrder(Order.replaceAll("&",","))
}
return qc;
} public QueryCriteria wrapPage(QueryCriteria qc,RequestCondition queryCondition ){
int pageIndex = 1,pageSize = 1;
if(queryCondition.getPageIndex() != null&&queryCondition.getPageSize() != null){
pageIndex=queryCondition.getPageIndex();
pageSize=queryCondition.getPageSize();
qc.addPage(pageIndex,pageSize);
}
return qc;
}
一个简单的模糊+分页查询
工作笔记—hibernate之QueryCriteria的更多相关文章
- 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境
上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...
- 2016年第2周读书笔记与工作笔记 scrollIntoView()与datalist元素
这一周主要是看了html5网页开发实例与javascript 高级程序设计,供以后翻阅查找. html5网页开发实例第1章与第二章的2.1部分: 第1章内容: html5在w3c的发展史. 浏览器的 ...
- javascript - 工作笔记 (事件四)
在javascript - 工作笔记 (事件绑定二)篇中,我将事件的方法做了简单的包装, JavaScript Code 12345 yx.bind(item, "click&quo ...
- Sencha Touch2 工作笔记
Sencha Touch2 工作笔记 Ext.dataview.List activate( this, newActiveItem, oldActiveItem, eOpts ) Fires whe ...
- 工作笔记5.JAVA图片验证码
本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServl ...
- 读书笔记——《MySQL DBA 工作笔记》
关于前言 作者在前言中提出的一些观点很具有参考价值, 梳理完整的知识体系 这是每一个技术流都应该追逐的,完整的知识体系能够使我们对知识的掌握更加全面,而不仅仅局限于点 建立技术连接的思维,面对需求,永 ...
- 《工作笔记:移动web页面前端开发总结》
工作笔记:移动web页面前端开发总结 移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (I ...
- 【工作笔记】BAT批处理学习笔记与示例
BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...
- Hibernate学习笔记-Hibernate关系映射
1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...
随机推荐
- python 使用缓存加快运算
from functools import lru_cache import time from functools import wraps def clock(func): @wraps(func ...
- 【Docker】Dockerfile使用apt-get来安装jdk
前面谈过使用wget来从oracle下载jdk安装文件是使用了cookie欺骗的方法来越过身份验证来使用Dockerfile在ubuntu内安装oracle版本的jdk的. 然而正道还是用apt-ge ...
- 在unity中使用protobuf
https://www.jianshu.com/p/b135676dbe8d 上面的提供序列化和常见的序列化有点不一样 下面的是常见的序列化的,但是他没有讲怎么用工具生成.proto--->.c ...
- Tomcat与Nginx的整合
Tomcat与Nginx的整合 环境 操作系统:ubuntu 14.04.4 LTS 安装Nginx 有两种方式,一种是使用apt-get命令来安装二进制版本,另外一种是下载源码后自己编译. 二进制安 ...
- 以前折腾的7zip图标
7z.dll替换文件 http://files.cnblogs.com/colben/7zDll.7z
- 翻屏类 h5 适配方案:解决宽高自适应难题
表格 图片等 宽度自适应 :width:100%; box-sizing: border-box; 基于淘宝适配方案flexible + 翻屏h5 适配方案adaptive flexible解读及 ...
- php操作Excel
php操作Excel 1.new PHPExcel对象$objPHPExcel = new PHPExcel(); 2表的初始化设置$objPHPExcel->getProperties()-& ...
- wxss无法调用本地资源图片
微信小程序中,wxss中不能调用本地资源图片作为背景图片,奇怪的是在微信开发者工具中可以调用,但是到了真机预览的时候发现并不行,有的电脑上的连微信开发者工具里也不可以调用. 原因在于小程序上传的是代码 ...
- 1.文本编辑器-->CKEditor+CKFinder使用与配置
一.CKEditor介绍 官网地址:http://ckeditor.com CKEditor下载地址:http://ckeditor.com/download CKFinder(免费版本)下载地址:h ...
- 2017年11月26日 C#流&&窗体对话框
C#流 在顶端加入using System.IO就可以使用流 StreamReder a = new StreamReder();//读取 前面什么都可以 = sr.ReadToEnd();//用法 ...