Class SelectSqlBuilder
- All Implemented Interfaces:
SqlBuilder
- Author:
- Cody Lu
-
Field Summary
Fields inherited from class cn.dinodev.spring.data.sql.builder.WhereSql
EMPTY_PARAMS, tables, whereColumns, whereParams, withName, withSql -
Method Summary
Modifier and TypeMethodDescription添加查询列信息,可以逐个添加,也可以添加多个,用逗号隔开,如下用法都是合法的添加多个查询列,每个参数可以是一个col,可以是多个,如下用法都是合法的:static SelectSqlBuildercreate(SelectSqlBuilder subQuery, String alias) 根据子查询创建SelectSqlBuilder实例static SelectSqlBuilder创建SelectSqlBuilder实例static SelectSqlBuilder根据表名创建SelectSqlBuilder实例static SelectSqlBuilder根据表名和别名创建SelectSqlBuilder实例CROSS JOIN 交叉连接,cross join不可以加onCROSS JOIN 交叉连接,cross join不可以加ondistinct()声明为distinct查询获取用于计数的SQL语句Object[]获取sql语句需要的参数数组getSql()获取生成的sql语句添加分组表达式,如下用法都是合法的having条件表达式having条件表达式,带参数.JOIN 内连接表,表达式,如下写法都是合法的:JOIN 内连接表,并给表指定别名:JOIN 内连接表,并给表指定别名和连接条件表达式:LEFT JOIN 左连接表,表达式,如下写法都是合法的:LEFT JOIN 左连接表,并给表指定别名:LEFT JOIN 左连接表,并给表指定别名和连接条件表达式:limit(int limit) 使用 LIMIT 限制查询条数,生成的SQL语句如下:limit(int limit, long offset) 使用 LIMIT 限制查询条数,生成的SQL语句如下:添加 ORDER BY 排序表达式,如下用法都是合法的:添加 ORDER BY 排序表达式,并指明是否 ASC 升序,如下用法都是合法的:RIGHT JOIN 右连接表,表达式,如下写法都是合法的:RIGHT JOIN 左连接表,并给表指定别名:RIGHT JOIN 右连接表,并给表指定别名和连接条件表达式:toString()union(SelectSqlBuilder selectSql) 与另一个查询,做 UNION 连接unionAll(SelectSqlBuilder selectSql) 与另一个查询,做 UNION ALL 连接Methods inherited from class cn.dinodev.spring.data.sql.builder.WhereSql
and, and, and, andIf, andIf, andIfNotNull, andIfNotNull, any, any, between, between, endWith, endWith, eq, eqIf, eqIfNotBlank, eqIfNotNull, in, in, in, in, inIf, inIf, isNotNull, isNotNull, isNotNullIf, isNotNullIf, isNull, isNull, isNullIf, isNullIf, like, like, ne, neIf, neIfNotBlank, neIfNotNull, notIn, notIn, notIn, notIn, or, or, or, orIf, orIf, orIfNotNull, orIfNotNull, setThat, some, some, someEndWith, someEndWith, someIf, someIf, someLike, someLike, someStartWith, someStartWith, startWith, startWith, table, where, where, where, whereIf, whereIf, whereIfNotNull, whereIfNotNull, withMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface cn.dinodev.spring.data.sql.SqlBuilder
appendList, appendList
-
Method Details
-
create
创建SelectSqlBuilder实例- Parameters:
dialect- 数据库方言- Returns:
- 配置好的SelectSqlBuilder实例
-
create
根据表名创建SelectSqlBuilder实例支持的格式:
-
"table1"-
"table1, table2"-
"table1 as t1"-
"table1 as t1 join table2 as t2 on t1.id=t2.id"- Parameters:
dialect- 数据库方言table- 表名- Returns:
- 配置好的SelectSqlBuilder实例
-
create
根据表名和别名创建SelectSqlBuilder实例生成的sql片段为:table AS alias
- Parameters:
dialect- 数据库方言table- 表名alias- 表别名- Returns:
- 配置好的SelectSqlBuilder实例
-
create
根据子查询创建SelectSqlBuilder实例- Parameters:
subQuery- 子查询alias- 子查询的别名- Returns:
- 配置好的SelectSqlBuilder实例
-
column
添加查询列信息,可以逐个添加,也可以添加多个,用逗号隔开,如下用法都是合法的-
column("col1, col2, 'abc' as col3");-
column("col1").column("col2").("col3, col4");- Parameters:
name-- Returns:
-
columns
添加多个查询列,每个参数可以是一个col,可以是多个,如下用法都是合法的:-
columns("col1", "col2", "'abc' as col3");-
columns("col1, col2", "col3"); - columns("col1").clumns("col2", "col3")- Parameters:
names-- Returns:
-
groupBy
添加分组表达式,如下用法都是合法的-
groupBy("col1", "col2");-
groupBy("col1, col2");-
groupBy("col1").groupBy("col2");- Parameters:
expr-- Returns:
-
orderBy
添加 ORDER BY 排序表达式,如下用法都是合法的:- orderBy("col1 desc", "col2");
- orderBy("col1, col2");
- orderBy("col1").orderBy("col2 desc");
- Parameters:
expr-- Returns:
-
orderBy
添加 ORDER BY 排序表达式,并指明是否 ASC 升序,如下用法都是合法的:- orderBy("col1", true); 则为 ORDER BY col1 ASC
- orderBy("col2", false); 则为 ORDER BY col2 DESC
- Parameters:
name- Name of the column by which to sort.ascending- If true, specifies the direction "asc", otherwise, specifiesthe direction "desc".
-
having
having条件表达式- having("cnt > 10");
多个条件用 AND 连接
- Parameters:
expr-- Returns:
-
having
having条件表达式,带参数.-
having("cnt > ? or type = ?", n, type);多个条件用 AND 连接
- Parameters:
expr-values-- Returns:
-
union
与另一个查询,做 UNION 连接若使用 UNION ALL 请使用
unionAll(SelectSqlBuilder)- Parameters:
selectSql-- Returns:
-
unionAll
与另一个查询,做 UNION ALL 连接若使用 UNION 请使用
union(SelectSqlBuilder)- Parameters:
selectSql-- Returns:
-
join
JOIN 内连接表,表达式,如下写法都是合法的:-
join("table2")-
join("table2 AS t2")-
join("table2 AS t2 ON t1.id = t2.classId")- Parameters:
joinExpr-- Returns:
-
join
JOIN 内连接表,并给表指定别名:-
join("table2", "t2")生成的sql为:
JOIN table2 AS t2- Parameters:
table-alias-- Returns:
-
join
JOIN 内连接表,并给表指定别名和连接条件表达式:-
join("table2", "t2", "t1.id=t2.classId AND t2.status=2")生成的sql为:
JOIN table2 AS t2 ON AND t2.status=2- Parameters:
table-alias-onExpr-values- 参数- Returns:
-
leftJoin
LEFT JOIN 左连接表,表达式,如下写法都是合法的:-
leftJoin("table2")-
leftJoin("table2 AS t2")-
leftJoin("table2 AS t2 ON t1.id = t2.classId")- Parameters:
joinExpr-- Returns:
-
leftJoin
LEFT JOIN 左连接表,并给表指定别名:-
leftJoin("table2", "t2")生成的sql为:
LEFT JOIN table2 AS t2- Parameters:
table-alias-- Returns:
-
leftJoin
LEFT JOIN 左连接表,并给表指定别名和连接条件表达式:-
leftJoin("table2", "t2", "t1.id=t2.classId AND t2.status=2")生成的sql为:
LEFT JOIN table2 AS t2 ON AND t2.status=2- Parameters:
table-alias-onExpr-values- 参数- Returns:
-
rightJoin
RIGHT JOIN 右连接表,表达式,如下写法都是合法的:-
rightJoin("table2")-
rightJoin("table2 AS t2")-
rightJoin("table2 AS t2 ON t1.id = t2.classId")- Parameters:
joinExpr-- Returns:
-
rightJoin
RIGHT JOIN 左连接表,并给表指定别名:-
rightJoin("table2", "t2")生成的sql为:
RIGHT JOIN table2 AS t2- Parameters:
table-alias-- Returns:
-
rightJoin
RIGHT JOIN 右连接表,并给表指定别名和连接条件表达式:-
rightJoin("table2", "t2", "t1.id=t2.classId AND t2.status=2")生成的sql为:
RIGHT JOIN table2 AS t2 ON AND t2.status=2- Parameters:
table-alias-onExpr-values- 参数- Returns:
-
crossJoin
CROSS JOIN 交叉连接,cross join不可以加on-
crossJoin("table2")生成的sql为:
CROSS JOIN table2OR-
crossJoin("jsonb_array_elements(knowledge)")生成的sql为:
CROSS JOIN jsonb_array_elements(knowledge)- Parameters:
joinExpr-- Returns:
-
crossJoin
CROSS JOIN 交叉连接,cross join不可以加on-
crossJoin("table2", "t2")生成的sql为:
CROSS JOIN table2 AS t2OR-
crossJoin("jsonb_array_elements(knowledge)", "value")生成的sql为:
CROSS JOIN jsonb_array_elements(knowledge) AS value- Parameters:
joinExpr-alias-- Returns:
-
distinct
声明为distinct查询- Returns:
-
limit
使用 LIMIT 限制查询条数,生成的SQL语句如下:LIMIT [limit]- Parameters:
limit-- Returns:
-
limit
使用 LIMIT 限制查询条数,生成的SQL语句如下:LIMIT [offset], [limit]使用 OFFSET 关键字,请用
invalid reference
#limitOffset(int, long)- Parameters:
limit-offset-- Returns:
-
toString
-
getSql
Description copied from interface:SqlBuilder获取生成的sql语句- Returns:
-
getCountSql
获取用于计数的SQL语句- Returns:
- 计数SQL语句字符串
-
getParams
Description copied from interface:SqlBuilder获取sql语句需要的参数数组- Returns:
-