package cn.itcast.core.util;

import java.util.ArrayList;
import java.util.List; public class QueryHelper { //from子句
private String fromClause = "";
//where子句
private String whereClause = "";
//order by子句
private String orderByClause = ""; private List<Object> parameters;
//排序顺序
public static String ORDER_BY_DESC = "DESC";//降序
public static String ORDER_BY_ASC = "ASC";//升序 /**
* 构造from 子句
* @param clazz 实体类
* @param alias 实体类对应的别名
*/
public QueryHelper(Class clazz, String alias){
fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
} /**
* 构造where子句
* @param condition 查询条件语句;例如:i.title like ?
* @param params 查询条件语句中?对应的查询条件值;例如: %标题%
*/
public void addCondition(String condition, Object... params){
if (whereClause.length() > 1) {//非第一个查询条件
whereClause += " AND " + condition;
} else {//第一个查询条件
whereClause += " WHERE " + condition;
} //设置查询条件值到查询条件值集合中
if(parameters == null){
parameters = new ArrayList<Object>();
}
if(params != null){
for(Object param: params){
parameters.add(param);
}
}
} /**
* 构造order by子句
* @param property 排序属性,如:i.createTime
* @param order 排序顺序,如:DESC 或者 ASC
*/
public void addOrderByProperty(String property, String order){
if (orderByClause.length() > 1) {//非第一个排序属性
orderByClause += "," + property + " " + order;
} else {//第一个排序属性
orderByClause = " ORDER BY " + property + " " + order;
}
} //查询hql语句
public String getQueryListHql(){
return fromClause + whereClause + orderByClause;
} //查询统计数的hql语句
public String getQueryCountHql(){
return "SELECT COUNT(*) " + fromClause + whereClause;
} //查询hql语句中?对应的查询条件值集合
public List<Object> getParameters(){
return parameters;
}
}

QueryHelper插件类(hql)的更多相关文章

  1. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  2. yaf插件类的使用

    yaf插件类的使用大小写敏感的. "插件名Plugin"为插件类的名字,这样会自动标志着这是一个插件. application.directory string 应用程序的目录,包 ...

  3. WorldWind源码剖析系列:插件类Plugin、插件信息类PluginInfo和插件编译器类PluginCompiler

    插件类Plugin是所有由插件编译器加载的插件子类的抽象父类,提供对插件的轻量级的访问控制功能. 插件信息类PluginInfo用来存储关于某个插件的信息的类,可以理解为对插件类Plugin类的进一步 ...

  4. Unity Editor 编写unity插件类

    在unity写了一个编辑类,基于iTweenpath插件,为了更方便的操作iTweenpath,顺便练习UnityEditor的操作,写了一个CreateiTweenPath,放在Editor文件夹中 ...

  5. QT小插件类之QRoundProgressBar

    QRoundProgressBar类 1. 详细描述 QRoundProgressBar类能够实现一个圆形的进度图表,并且有和QProgressBar类似的API接口 1.1 继承关系 #includ ...

  6. django framework插件类视图分页

    分页 继承APIView类的视图中添加分页 from rest_framework.pagination import PageNumberPagination class MyPageNumberP ...

  7. django framework插件类视图方法

    1.使用类视图APIView重写API 类视图APIView,取代@api_view装饰器,代码如下: from rest_framework import status from rest_fram ...

  8. WorldWind源码剖析系列:插件列表视图类PluginListView和插件列表视图项类PluginListItem

    WorldWind中的插件类是个庞大的类,可以说从软件设计层面上统筹可扩展的插件体系的设计思想是WorldWind中的精华,值得学习和借鉴.插件体系中的所用到的类可以分为两大类,一类是插件类Plugi ...

  9. 从零开始编写属于我的CMS:(六)插件

    二三四五还没写,先写六吧(有道友说想看看插件部分). 这里是一 从零开始编写属于我的CMS:(一)前言 一,首先预定义接口 新建类库,WangCms.PluginInterface 新建两个类,一个实 ...

随机推荐

  1. ABAP术语-BW (Business Information Warehouse)

    BW (Business Information Warehouse) 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/14/1037761. ...

  2. mysql数据库关于事务的问题?求解答

    表格代码: CREATE TABLE `t_teacher` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `deposit` ) DEFA ...

  3. ExtJS动态切换主题

    ExtJS动态切换主题         在Sencha Cmd构建的Ext程序中怎么去动态切换主题,目前看好像只能单一切换,但是在官网文档找到了答案 Resource Management在上一节通过 ...

  4. 阻塞队列之LinkedBlockingQueue

    概述 LinkedBlockingQueue内部由单链表实现,只能从head取元素,从tail添加元素.添加元素和获取元素都有独立的锁,也就是说LinkedBlockingQueue是读写分离的,读写 ...

  5. Hadoop(8)-HDFS的读写数据流程以及机架感知

    1. HDFS的写数据流程 1.客户端通过fs模块向NameNode申请文件上传,NameNode检查请求是否合法,如用户权限,目标文件是否已存在,父目录是否存在等等 2.NameNode返回是否可以 ...

  6. python应用:异常处理

    Python的错误异常在大部分IDE编辑器中则可以直接显示出来,便于开发人员的调试及修改工作,对初学者也比较友好. Python中包含错误和异常两种情况,错误主要是常见的语法错误SyntaxError ...

  7. ruby 数据类型Number

    Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash 数值类型(N ...

  8. Java学习笔记七:Java的流程控制语句之switch

    Java条件语句之 switch 当需要对选项进行等值判断时,使用 switch 语句更加简洁明了.例如:根据考试分数,给予前四名不同的奖品.第一名,奖励笔记本一台:第二名,奖励 IPAD 2 一个: ...

  9. (数据科学学习手札36)tensorflow实现MLP

    一.简介 我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除了利用前面介绍的sklearn.n ...

  10. (数据科学学习手札31)基于Python的网络数据采集(初级篇)

    一.简介 在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时 ...