HqlHelper查询助手
来源:互联网 发布:剑三黑鹤道长捏脸数据 编辑:程序博客网 时间:2024/05/16 06:25
package com.jh.hiv.utils;
import java.util.ArrayList;
import java.util.List;
/**
* 用于辅助生成HQL语句与参数列表
*
* @author tyg
*
*/
public class HqlHelper {
private String selectClause = ""; // select子句
private String fromClause; // From子句
private String whereClause = ""; // Where子句
private String orderByClause = ""; // OrderBy子句
private List<Object> parameters = new ArrayList<Object>(); // 参数列表
/**
* 生成From子句
*
* @param clazz
* @param alias
*/
public HqlHelper(Class clazz, String alias) {
fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
}
/**
* 拼接select子句,选择特定的列
* @param property (传入选择的列 多列用逗号“,” 隔开 )
* @return
*/
public HqlHelper AddSelect(String property){
if(selectClause.length() == 0 ){
selectClause = "select "+property+" ";
}else{
selectClause += property +" ";
}
return this;
* 构造where子句
* @param condition 查询条件语句;例如:i.title like ?
* @param params 查询条件语句中?对应的查询条件值;例如: %标题%
*/
public HqlHelper addWhereCondition(String condition, Object... params) {
if (whereClause.length() == 0) {
whereClause = " WHERE " + condition;
} else {
whereClause += " AND " + condition;
}
if (params != null && params.length > 0) {
for (Object param : params) {
this.parameters.add(param);
}
}
return this;
}
/**
* 如果第一个参数为true,则拼接Where子句(添加的多个过滤条件之间是使用AND连接的)
*
* @param append 为true 添加条件
* @param condition
* 一个过滤条件
* @param params
*/
public HqlHelper addWhereCondition(boolean append, String condition, Object... params) {
if (append) {
addWhereCondition(condition, params);
}
return this;
}
/**
* 拼接OrderBy子句
*
* @param propertyName
* @param isAsc
*/
public HqlHelper addOrderByProperty(String propertyName, boolean isAsc) {
if (orderByClause.length() == 0) {
orderByClause = " ORDER BY " + propertyName + (isAsc ? " ASC" : " DESC");
} else {
orderByClause += ", " + propertyName + (isAsc ? " ASC" : " DESC");
}
return this;
}
/**
* 如果第一个参数为true,则拼接OrderBy子句
*
* @param propertyName
* @param isAsc
*/
public HqlHelper addOrderByProperty(boolean append, String propertyName, boolean isAsc) {
if (append) {
addOrderByProperty(propertyName, isAsc);
}
return this;
}
/**
* 获取查询数据列表的的HQL语句
*
* @return
*/
public String getQueryListHql() {
return selectClause + fromClause + whereClause + orderByClause;
}
/**
* 获取查询总记录数的的HQL语句
*
* @return
*/
public String getQueryCountHql() {
return "SELECT COUNT(*) " + fromClause + whereClause;
}
/**
* 获取参数列表
*
* @return
*/
public List<Object> getParameters() {
return parameters;
}
}
import java.util.ArrayList;
import java.util.List;
/**
* 用于辅助生成HQL语句与参数列表
*
* @author tyg
*
*/
public class HqlHelper {
private String selectClause = ""; // select子句
private String fromClause; // From子句
private String whereClause = ""; // Where子句
private String orderByClause = ""; // OrderBy子句
private List<Object> parameters = new ArrayList<Object>(); // 参数列表
/**
* 生成From子句
*
* @param clazz
* @param alias
*/
public HqlHelper(Class clazz, String alias) {
fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
}
/**
* 拼接select子句,选择特定的列
* @param property (传入选择的列 多列用逗号“,” 隔开 )
* @return
*/
public HqlHelper AddSelect(String property){
if(selectClause.length() == 0 ){
selectClause = "select "+property+" ";
}else{
selectClause += property +" ";
}
return this;
}
* 构造where子句
* @param condition 查询条件语句;例如:i.title like ?
* @param params 查询条件语句中?对应的查询条件值;例如: %标题%
*/
public HqlHelper addWhereCondition(String condition, Object... params) {
if (whereClause.length() == 0) {
whereClause = " WHERE " + condition;
} else {
whereClause += " AND " + condition;
}
if (params != null && params.length > 0) {
for (Object param : params) {
this.parameters.add(param);
}
}
return this;
}
/**
* 如果第一个参数为true,则拼接Where子句(添加的多个过滤条件之间是使用AND连接的)
*
* @param append 为true 添加条件
* @param condition
* 一个过滤条件
* @param params
*/
public HqlHelper addWhereCondition(boolean append, String condition, Object... params) {
if (append) {
addWhereCondition(condition, params);
}
return this;
}
/**
* 拼接OrderBy子句
*
* @param propertyName
* @param isAsc
*/
public HqlHelper addOrderByProperty(String propertyName, boolean isAsc) {
if (orderByClause.length() == 0) {
orderByClause = " ORDER BY " + propertyName + (isAsc ? " ASC" : " DESC");
} else {
orderByClause += ", " + propertyName + (isAsc ? " ASC" : " DESC");
}
return this;
}
/**
* 如果第一个参数为true,则拼接OrderBy子句
*
* @param propertyName
* @param isAsc
*/
public HqlHelper addOrderByProperty(boolean append, String propertyName, boolean isAsc) {
if (append) {
addOrderByProperty(propertyName, isAsc);
}
return this;
}
/**
* 获取查询数据列表的的HQL语句
*
* @return
*/
public String getQueryListHql() {
return selectClause + fromClause + whereClause + orderByClause;
}
/**
* 获取查询总记录数的的HQL语句
*
* @return
*/
public String getQueryCountHql() {
return "SELECT COUNT(*) " + fromClause + whereClause;
}
/**
* 获取参数列表
*
* @return
*/
public List<Object> getParameters() {
return parameters;
}
}
0 0
- HqlHelper查询助手
- 查询助手
- 查询助手代码
- CRM-数据库查询助手QueryHelper
- Ajax实现查询助手(Query Helper)
- Ajax实现查询助手(Query Helper)
- Ajax实现查询助手(Query Helper)
- Ajax实现查询助手(Query Helper)
- Ajax实现查询助手(Query Helper)
- Ajax实现查询助手(Query Helper)
- 实现一个当当网商品价格查询助手
- 完成android教务助手之课表查询
- 远程终端IP地址查询助手
- 百度网站权重(SEO)查询 站长做站好助手
- 司机秘书:让司机省心的违章查询助手
- 12306 订票助手,自动登录,自动查询,自动重试订单
- 微信行政助手班车LBS智能查询
- 学生教务信息查询与管理小助手
- SwitchButton 开关按钮 的多种实现方式 (附源码DEMO)
- 十五、自定义联系人导航(中)---带悬停的联系人列表
- MFC中图片控件Picture Control的使用
- logback logback.xml常用配置详解(一)<configuration> and <logger>
- 从源码编译构建Jmeter
- HqlHelper查询助手
- 通过systemd配置Docker--systemd Service相关目录
- android中常用的技巧
- 杭电1158 DP
- jmeter之断言
- Android 读书笔记
- C++检测键盘某键是否按下
- Python爬虫 下载 mp3、视频、zip等 这里以有声小说“凡人修仙传”为例
- 解决centos7 docker1.9 没有配置文件