public abstract class QueryUtils extends Object
| 限定符和类型 | 类和说明 |
|---|---|
static interface |
QueryUtils.IFilterTranslater |
static class |
QueryUtils.SimpleFilterTranslater |
| 限定符和类型 | 字段和说明 |
|---|---|
static String |
SQL_PRETREAT_CREEPFORIN
对于不支持数组参数的执行引擎,需要将参数按照数值的格式进行扩展
修改语句中的 命名参数,使其能够接受 多个参数以便用于in语句,比如: in(:a)
传入a为一个数组,会根据a的实际长度变为 in(:a0,:a1,a2,......)
|
static String |
SQL_PRETREAT_DATE
转化为日期类型,
|
static String |
SQL_PRETREAT_DATESTR
转化为 2016-6-16这样的日期字符串
|
static String |
SQL_PRETREAT_DATETIME
转化为带时间的,日期的类型
|
static String |
SQL_PRETREAT_DATETIMESTR
转化为 2016-6-16 10:25:34这样的日期和时间字符串
|
static String |
SQL_PRETREAT_DIGIT
过滤掉所有非数字字符
|
static String |
SQL_PRETREAT_ENDWITH
用于like语句,只在参数前面添加一个 %
|
static String |
SQL_PRETREAT_ESCAPE_HTML
过滤参数中的html标签
|
static String |
SQL_PRETREAT_FLOAT
转化为 Double 类型
|
static String |
SQL_PRETREAT_INPLACE
将参数值 拼接到 sql对应的参数位置,同时要避免sql注入;一般用与Order by中
|
static String |
SQL_PRETREAT_INTEGER
应该转化 Integer类型,单对于数据库来说他和long没有区别所以也返回的Long类型
|
static String |
SQL_PRETREAT_LIKE
转化为模式匹配字符串,字符串中间的空格、tab都会被%替换
|
static String |
SQL_PRETREAT_LONG
转化 Long 类型
|
static String |
SQL_PRETREAT_LOWERCASE
小写
|
static String |
SQL_PRETREAT_NEXT_DAY
转化为日期类型,并且计算第二天的日期,没有时间(时间为00:00:00) 用于区间查询的结束时间
|
static String |
SQL_PRETREAT_NEXT_MONTH |
static String |
SQL_PRETREAT_NEXT_YEAR |
static String |
SQL_PRETREAT_NO_PARAM
表示这个参数不需要
|
static String |
SQL_PRETREAT_NUMBER
转化为符合数字的字符串,
|
static String |
SQL_PRETREAT_PREV_DAY |
static String |
SQL_PRETREAT_PREV_MONTH |
static String |
SQL_PRETREAT_PREV_YEAR |
static String |
SQL_PRETREAT_QUOTASTR
给子符串添加''使其可以拼接到sql语句中,并避免sql注入
|
static String |
SQL_PRETREAT_SPLITFORIN
将字符串 用,分割返回 String[];对于支持数组变量的spring jdbcTemplate
或者hibernate中的hql用这个处理就可以了,先腾实现的jpa也支持数组参数
|
static String |
SQL_PRETREAT_STARTWITH
用于like语句,只在参数后面添加一个 %,MySql建议只用这个,其他的匹配方式在MySql中效率都比较低
|
static String |
SQL_PRETREAT_STRING
将对象转换为 String, 如果是数组用 ','连接。
|
static String |
SQL_PRETREAT_UPPERCASE
大写
|
| 限定符和类型 | 方法和说明 |
|---|---|
static String |
buildDateStringForOracle(Date value)
在HQL检索策略以外,模糊拼接key-value键值对,把string包装成to-char('value','yyyy-MM-dd')
|
static String |
buildDateStringForOracle(Date value) |
static String |
buildDateStringForQuery(Date value) |
static String |
buildDateStringForQuery(Date value) |
static String |
buildDateTimeStringForOracle(Date value)
在HQL检索策略以外,模糊拼接key-value键值对,把string包装成to-char('value','yyyy-MM-dd
hh24:mi:ss')
|
static String |
buildDateTimeStringForOracle(Date value) |
static String |
buildDatetimeStringForQuery(Date value) |
static String |
buildDatetimeStringForQuery(Date value) |
static String |
buildDB2LimitQuerySQL(String sql,
int offset,
int maxsize)
生成DB2分页查询语句
|
static String |
buildGetCountHQL(String hql)
hql语句不能用子查询的方式,只能用buildGetCountSQLByReplaceFields
|
static String |
buildGetCountSQL(String sql)
sql 语句可以用 子查询和替换查询字段的方式获得总数,
但是 有distinct的语句只能用子查询的方式。
|
static String |
buildGetCountSQLByReplaceFields(String sql)
将查询语句转换为相同条件的查询符合条件的记录数的语句, 需要考虑with语句
即将 select 的字段部分替换为 count(*) 并去掉 order by排序部分
对查询语句中有distinct的sql语句不使用
|
static String |
buildGetCountSQLBySubSelect(String sql)
通过子查询来实现获取计数语句
|
static QueryAndNamedParams |
buildInStatement(String paramAlias,
Object realParam)
通过参数数组 编译in语句
|
static String |
buildLimitQuerySQL(String sql,
int offset,
int maxsize,
boolean asParameter,
DBType dbType) |
static String |
buildMySqlLimitQuerySQL(String sql,
int offset,
int maxsize,
boolean asParameter) |
static String |
buildObjectsStringForQuery(Collection<?> objects) |
static String |
buildObjectsStringForQuery(Object[] objects) |
static String |
buildObjectStringForQuery(Object fieldValue) |
static String |
buildOracleLimitQuerySQL(String sql,
int offset,
int maxsize,
boolean asParameter)
org.hibernate.dialect
生成Oracle分页查询语句, 不考虑for update语句
|
static String |
buildPostgreSqlLimitQuerySQL(String sql,
int offset,
int maxsize,
boolean asParameter)
生成PostgreSql分页查询语句
|
static String |
buildSqlServerLimitQuerySQL(String sql,
int offset,
int maxsize)
生成SqlServer分页查询语句
|
static String |
buildStringForQuery(String value)
把字符串string包装成'string',并将字符传中的数里的"'"替换为“''”
|
static String |
cleanSqlStatement(String fieldsSql)
去掉 分号 ; 和 单行注释 / * 注释保留 * /
|
static Map<String,Object> |
createSqlParamsMap(Object... objs)
已过时。
|
static Set<String> |
fetchParamsFromTemplateConditions(String queryPiece)
参数 模板 p1.1:(like)ps
条件模板: [(条件)(参数)| 语句]
[参数| 语句]
|
static String |
fetchTemplateParamName(String pramePiece)
一、 p1.1:(like)ps return p1.1
二、:(like)ps return ps
三、:ps return ps
四、 ps return ps
|
static Set<String> |
fetchTemplateParamNames(String paramString)
参数 模板 p1.1:(like,,)ps
条件模板: [(条件)(参数)| 语句]
[参数| 语句]
|
static String |
getGroupByField(String sql)
去掉 order by 语句
|
static String |
getMatchString(String sMatch)
将string中的 空格换成 % 作为like语句的匹配串
比如在客户端输入 “hello world”,会转变为 "%hello%world%",即将头尾和中间的空白转换为%用于匹配。
|
static List<org.apache.commons.lang3.tuple.Pair<String,String>> |
getSqlFieldNamePieceMap(String sql)
返回sql语句中所有的 字段 语句表达式
获得查询语句中的所有 字段描述 ,比如 select a, (b+c) as d, f fn from ta 语句 返回 [ a, (b+c) as d , f fn ]
|
static List<String> |
getSqlFieldPieces(String sql)
返回sql语句中所有的 字段 语句表达式
获得查询语句中的所有 字段描述 ,比如 select a, (b+c) as d, f fn from ta 语句 返回 [ a, (b+c) as d , f fn ]
|
static List<String> |
getSqlFiledNames(String sql)
返回sql语句中所有的 字段 名称
获得 查询语句中的所有 字段名称,比如 select a, (b+c) as d, f fn from ta 语句 返回 [a,d,fn]
|
static List<String> |
getSqlNamedParameters(String sql)
获取sql语句中所有的 命名参数
|
static List<String> |
getSqlTemplateFiledNames(String sql)
返回SqlTemplate(sql语句模板)中所有的所有的 字段 名称
获得 查询语句中的所有 字段名称,比如 select a, (b+c) as d, f fn from ta 语句 返回 [a,d,fn]
|
static Set<String> |
getSqlTemplateParameters(String sql) |
static boolean |
hasOrderBy(String sql)
去掉 order by 语句
|
static boolean |
hasPretreatment(String pretreatStr,
String onePretreat) |
static Object |
onePretreatParameter(String pretreatment,
Object paramValue) |
static org.apache.commons.lang3.tuple.ImmutableTriple<String,String,String> |
parseParameter(String paramString)
参数表示式的完整形式是 : 表达式:(预处理,预处理2,......)参数名称
|
static Object |
pretreatParameter(String pretreatment,
Object paramValue)
对参数进行预处理
|
static String |
removeOrderBy(String sql)
去掉 order by 语句
|
static int |
replaceMatchParams(Map<String,Object> queryParams,
Collection<String> likeParams)
将查序变量中 用于 like语句的变量转换为match字符串,比如“hello world”会转变为 "%hello%world%",
|
static int |
replaceMatchParams(Map<String,Object> queryParams,
String... likeParams)
将查序变量中 用于 like语句的变量转换为match字符串,比如“hello world”会转变为 "%hello%world%",
|
static String |
replaceParamAsSqlString(String sql,
String paramAlias,
String paramSqlString) |
static Object |
scalarPretreatParameter(String pretreatment,
Object paramValue)
对参数进行预处理
|
static List<String> |
splitParamString(String paramString) |
static List<String> |
splitSqlByFields(String sql)
将sql语句 filed部分为界 分三段;
第一段为 select 之前的内容,如果是sql server 将包括 top [n] 的内容
第二段为 from 和select 之间的内容,就是field内容
第三段为 where 之后的内容包括 order by
|
static List<String> |
splitSqlFieldNames(String sFieldSql)
返回sql语句中所有的 字段 名称
获得 查询语句中的所有 字段名称,比如 a, (b+c) as d, f fn from 语句 返回 [a,d,fn]
|
static QueryAndNamedParams |
translateQuery(Map<String,String> tableMap,
Collection<String> filters,
Map<String,Object> paramsMap,
boolean isUnion)
是这个方法只生成外部过滤条件的 过滤语句片段
|
static QueryAndNamedParams |
translateQuery(String queryStatement,
Collection<String> filters,
boolean isUnion,
QueryUtils.IFilterTranslater translater) |
static QueryAndNamedParams |
translateQuery(String queryStatement,
Collection<String> filters,
Map<String,Object> paramsMap,
boolean isUnion) |
static QueryAndNamedParams |
translateQuery(String queryStatement,
Map<String,Object> paramsMap)
和public static QueryAndNamedParams translateQuery(
String queryStatement,Collection《String》 filters,
Map《String,Object》 paramsMap, boolean isUnion)
一样,不同的是这个方法在没有外部过滤条件的情况下使用,就是没有上面的方法一
|
static QueryAndNamedParams |
translateQueryFilter(Collection<String> filters,
QueryUtils.IFilterTranslater translater,
boolean isUnion) |
static QueryAndNamedParams |
translateQueryFilter(String filter,
QueryUtils.IFilterTranslater translater) |
static QueryAndNamedParams |
translateQueryPiece(String queryPiece,
QueryUtils.IFilterTranslater translater) |
static com.centit.support.common.LeftRightPair<String,List<String>> |
transNamedParamSqlToParamSql(String sql)
返回sql语句中所有的 命令变量(:变量名),最后一个String 为转换为?
|
static String |
trimSqlOrderByField(String sqlOrderBy)
过滤 order by 语句中无效信息,在可能带入乱码和注入的情况下使用
|
public static final String SQL_PRETREAT_LIKE
public static final String SQL_PRETREAT_STARTWITH
public static final String SQL_PRETREAT_ENDWITH
public static final String SQL_PRETREAT_NEXT_DAY
public static final String SQL_PRETREAT_DATESTR
public static final String SQL_PRETREAT_DATETIMESTR
public static final String SQL_PRETREAT_QUOTASTR
public static final String SQL_PRETREAT_INTEGER
public static final String SQL_PRETREAT_STRING
public static final String SQL_PRETREAT_SPLITFORIN
public static final String SQL_PRETREAT_CREEPFORIN
public static final String SQL_PRETREAT_INPLACE
public static String buildStringForQuery(String value)
value - valuepublic static String buildObjectsStringForQuery(Collection<?> objects)
public static String buildDateStringForOracle(Date value)
value - valuepublic static String buildDateTimeStringForOracle(Date value)
value - valuepublic static String getMatchString(String sMatch)
sMatch - sMatchpublic static int replaceMatchParams(Map<String,Object> queryParams, Collection<String> likeParams)
queryParams - 查询命名变量和值对likeParams - 用于like 的变量名public static int replaceMatchParams(Map<String,Object> queryParams, String... likeParams)
queryParams - 查询命名变量和值对likeParams - 用于like 的变量名public static boolean hasOrderBy(String sql)
sql - sqlpublic static String getGroupByField(String sql)
sql - sqlpublic static List<String> splitSqlByFields(String sql)
sql - sqlpublic static String buildGetCountSQLByReplaceFields(String sql)
sql - sqlpublic static String buildGetCountSQLBySubSelect(String sql)
sql - sql 或者 hql 语句public static String buildGetCountSQL(String sql)
sql - sqlpublic static String buildGetCountHQL(String hql)
hql - sqlpublic static String buildPostgreSqlLimitQuerySQL(String sql, int offset, int maxsize, boolean asParameter)
sql - sqloffset - offsetmaxsize - maxsizeasParameter - asParameterpublic static String buildMySqlLimitQuerySQL(String sql, int offset, int maxsize, boolean asParameter)
public static String buildOracleLimitQuerySQL(String sql, int offset, int maxsize, boolean asParameter)
sql - sqloffset - offsetmaxsize - maxsizeasParameter - asParameterpublic static String buildDB2LimitQuerySQL(String sql, int offset, int maxsize)
sql - sqloffset - offsetmaxsize - maxsizepublic static String buildSqlServerLimitQuerySQL(String sql, int offset, int maxsize)
sql - sqloffset - offsetmaxsize - maxsizepublic static String buildLimitQuerySQL(String sql, int offset, int maxsize, boolean asParameter, DBType dbType)
public static com.centit.support.common.LeftRightPair<String,List<String>> transNamedParamSqlToParamSql(String sql)
sql - sqlpublic static List<String> getSqlNamedParameters(String sql)
sql - sqlpublic static String fetchTemplateParamName(String pramePiece)
pramePiece - pramePiecepublic static Set<String> fetchTemplateParamNames(String paramString)
paramString - paramStringpublic static Set<String> fetchParamsFromTemplateConditions(String queryPiece)
queryPiece - queryPiecepublic static List<org.apache.commons.lang3.tuple.Pair<String,String>> getSqlFieldNamePieceMap(String sql)
sql - sqlpublic static List<String> getSqlFieldPieces(String sql)
sql - sqlpublic static List<String> splitSqlFieldNames(String sFieldSql)
sFieldSql - sFieldSqlpublic static List<String> getSqlFiledNames(String sql)
sql - sqlpublic static List<String> getSqlTemplateFiledNames(String sql)
sql - sqlpublic static String trimSqlOrderByField(String sqlOrderBy)
sqlOrderBy - sqlOrderBy@Deprecated public static Map<String,Object> createSqlParamsMap(Object... objs)
objs - 奇数变量为参数名,类型为string,偶数变量为参数值,类型为任意对象(object)方法 createHashMappublic static Object scalarPretreatParameter(String pretreatment, Object paramValue)
pretreatment - pretreatmentparamValue - paramValuepublic static Object onePretreatParameter(String pretreatment, Object paramValue)
public static Object pretreatParameter(String pretreatment, Object paramValue)
pretreatment, - 可以有多个,用','分开paramValue - paramStringpublic static org.apache.commons.lang3.tuple.ImmutableTriple<String,String,String> parseParameter(String paramString)
paramString - paramStringpublic static QueryAndNamedParams buildInStatement(String paramAlias, Object realParam)
paramAlias - 参数别名realParam - 参数实际值public static String cleanSqlStatement(String fieldsSql)
fieldsSql - paramStringpublic static String replaceParamAsSqlString(String sql, String paramAlias, String paramSqlString)
public static QueryAndNamedParams translateQueryFilter(String filter, QueryUtils.IFilterTranslater translater)
filter - 转换为 sqltranslater - 变量内嵌在语句中,不用参数public static QueryAndNamedParams translateQueryFilter(Collection<String> filters, QueryUtils.IFilterTranslater translater, boolean isUnion)
public static QueryAndNamedParams translateQueryPiece(String queryPiece, QueryUtils.IFilterTranslater translater)
public static QueryAndNamedParams translateQuery(String queryStatement, Collection<String> filters, boolean isUnion, QueryUtils.IFilterTranslater translater)
public static QueryAndNamedParams translateQuery(String queryStatement, Collection<String> filters, Map<String,Object> paramsMap, boolean isUnion)
public static QueryAndNamedParams translateQuery(String queryStatement, Map<String,Object> paramsMap)
queryStatement - queryStatementparamsMap - paramsMappublic static QueryAndNamedParams translateQuery(Map<String,String> tableMap, Collection<String> filters, Map<String,Object> paramsMap, boolean isUnion)
tableMap - 管理的表名 和 别名filters - 相关的过滤条件paramsMap - 参数isUnion - 拼接方式,是在同一个占位符中有多个符合条件的过滤语句时之间的拼接方式,true用Or拼接,false用and拼接Copyright © 2025 江苏南大先腾信息产业股份有限公司. All rights reserved.