
com.mybatisflex.core.query.QueryMethods Maven / Gradle / Ivy
/*
* Copyright (c) 2022-2025, Mybatis-Flex ([email protected]).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mybatisflex.core.query;
import static com.mybatisflex.core.constant.FuncName.*;
import com.mybatisflex.core.table.TableInfo;
import com.mybatisflex.core.table.TableInfoFactory;
import com.mybatisflex.core.util.ArrayUtil;
import com.mybatisflex.core.util.LambdaGetter;
import com.mybatisflex.core.util.LambdaUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* SQL 函数。
*/
@SuppressWarnings("unused")
public class QueryMethods {
private QueryMethods() {
}
// === 数学函数 ===
/**
* 返回 x 的绝对值。
*/
public static QueryColumn abs(String columnX) {
return new FunctionQueryColumn(ABS, columnX);
}
/**
* 返回 x 的绝对值。
*/
public static QueryColumn abs(QueryColumn columnX) {
return new FunctionQueryColumn(ABS, columnX);
}
/**
* 返回 x 的绝对值。
*/
public static QueryColumn abs(LambdaGetter columnX) {
return new FunctionQueryColumn(ABS, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceil(String columnX) {
return new FunctionQueryColumn(CEIL, columnX);
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceil(QueryColumn columnX) {
return new FunctionQueryColumn(CEIL, columnX);
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceil(LambdaGetter columnX) {
return new FunctionQueryColumn(CEIL, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceiling(String columnX) {
return new FunctionQueryColumn(CEILING, columnX);
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceiling(QueryColumn columnX) {
return new FunctionQueryColumn(CEILING, columnX);
}
/**
* 返回大于或等于 x 的最小整数(向上取整)。
*/
public static QueryColumn ceiling(LambdaGetter columnX) {
return new FunctionQueryColumn(CEILING, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回小于或等于 x 的最大整数(向下取整)。
*/
public static QueryColumn floor(String columnX) {
return new FunctionQueryColumn(FLOOR, columnX);
}
/**
* 返回小于或等于 x 的最大整数(向下取整)。
*/
public static QueryColumn floor(QueryColumn columnX) {
return new FunctionQueryColumn(FLOOR, columnX);
}
/**
* 返回小于或等于 x 的最大整数(向下取整)。
*/
public static QueryColumn floor(LambdaGetter columnX) {
return new FunctionQueryColumn(FLOOR, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 0~1 的随机数。
*/
public static QueryColumn rand() {
return new FunctionQueryColumn(RAND);
}
/**
* 返回 0~1 的随机数,x 值相同时返回的随机数相同。
*/
public static QueryColumn rand(String columnX) {
return new FunctionQueryColumn(RAND, columnX);
}
/**
* 返回 0~1 的随机数,x 值相同时返回的随机数相同。
*/
public static QueryColumn rand(QueryColumn columnX) {
return new FunctionQueryColumn(RAND, columnX);
}
/**
* 返回 0~1 的随机数,x 值相同时返回的随机数相同。
*/
public static QueryColumn rand(LambdaGetter columnX) {
return new FunctionQueryColumn(RAND, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 x 的符号,x 是负数、0、正数分别返回 -1、0、1。
*/
public static QueryColumn sign(String columnX) {
return new FunctionQueryColumn(SIGN, columnX);
}
/**
* 返回 x 的符号,x 是负数、0、正数分别返回 -1、0、1。
*/
public static QueryColumn sign(QueryColumn columnX) {
return new FunctionQueryColumn(SIGN, columnX);
}
/**
* 返回 x 的符号,x 是负数、0、正数分别返回 -1、0、1。
*/
public static QueryColumn sign(LambdaGetter columnX) {
return new FunctionQueryColumn(SIGN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回圆周率。
*/
public static QueryColumn pi() {
return new FunctionQueryColumn(PI);
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(String columnX, String columnY) {
return new FunctionQueryColumn(TRUNCATE, columnX, columnY);
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(QueryColumn columnX, QueryColumn columnY) {
return new FunctionQueryColumn(TRUNCATE, columnX, columnY);
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(LambdaGetter columnX, LambdaGetter columnY) {
return new FunctionQueryColumn(TRUNCATE, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnY));
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(String columnX, Integer y) {
return new FunctionQueryColumn(TRUNCATE, new QueryColumn(columnX), number(y));
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(QueryColumn columnX, Integer y) {
return new FunctionQueryColumn(TRUNCATE, columnX, number(y));
}
/**
* 返回数值 x 保留到小数点后 y 位的值。
*/
public static QueryColumn truncate(LambdaGetter columnX, Integer y) {
return new FunctionQueryColumn(TRUNCATE, LambdaUtil.getQueryColumn(columnX), number(y));
}
/**
* 返回离 x 最近的整数(四舍五入)。
*/
public static QueryColumn round(String columnX) {
return new FunctionQueryColumn(ROUND, columnX);
}
/**
* 返回离 x 最近的整数(四舍五入)。
*/
public static QueryColumn round(QueryColumn columnX) {
return new FunctionQueryColumn(ROUND, columnX);
}
/**
* 返回离 x 最近的整数(四舍五入)。
*/
public static QueryColumn round(LambdaGetter columnX) {
return new FunctionQueryColumn(ROUND, LambdaUtil.getQueryColumn(columnX));
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(String columnX, String columnY) {
return new FunctionQueryColumn(ROUND, columnX, columnY);
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(QueryColumn columnX, QueryColumn columnY) {
return new FunctionQueryColumn(ROUND, columnX, columnY);
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(LambdaGetter columnX, LambdaGetter columnY) {
return new FunctionQueryColumn(ROUND, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnY));
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(String columnX, Integer y) {
return new FunctionQueryColumn(ROUND, new QueryColumn(columnX), number(y));
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(QueryColumn columnX, Integer y) {
return new FunctionQueryColumn(ROUND, columnX, number(y));
}
/**
* 保留 x 小数点后 y 位的值,但截断时要四舍五入。
*/
public static QueryColumn round(LambdaGetter columnX, Integer y) {
return new FunctionQueryColumn(ROUND, LambdaUtil.getQueryColumn(columnX), number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(String columnX, String columnY) {
return new FunctionQueryColumn(POW, columnX, columnY);
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(QueryColumn columnX, QueryColumn columnY) {
return new FunctionQueryColumn(POW, columnX, columnY);
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(LambdaGetter columnX, LambdaGetter columnY) {
return new FunctionQueryColumn(POW, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnY));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(String columnX, Integer y) {
return new FunctionQueryColumn(POW, new QueryColumn(columnX), number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(QueryColumn columnX, Integer y) {
return new FunctionQueryColumn(POW, columnX, number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn pow(LambdaGetter columnX, Integer y) {
return new FunctionQueryColumn(POW, LambdaUtil.getQueryColumn(columnX), number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(String columnX, String columnY) {
return new FunctionQueryColumn(POWER, columnX, columnY);
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(QueryColumn columnX, QueryColumn columnY) {
return new FunctionQueryColumn(POWER, columnX, columnY);
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(LambdaGetter columnX, LambdaGetter columnY) {
return new FunctionQueryColumn(POWER, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnY));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(String columnX, Integer y) {
return new FunctionQueryColumn(POWER, new QueryColumn(columnX), number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(QueryColumn columnX, Integer y) {
return new FunctionQueryColumn(POWER, columnX, number(y));
}
/**
* 返回 x 的 y 次方。
*/
public static QueryColumn power(LambdaGetter columnX, Integer y) {
return new FunctionQueryColumn(POWER, LambdaUtil.getQueryColumn(columnX), number(y));
}
/**
* 返回 x 的平方根。
*/
public static QueryColumn sqrt(String columnX) {
return new FunctionQueryColumn(SQRT, columnX);
}
/**
* 返回 x 的平方根。
*/
public static QueryColumn sqrt(QueryColumn columnX) {
return new FunctionQueryColumn(SQRT, columnX);
}
/**
* 返回 x 的平方根。
*/
public static QueryColumn sqrt(LambdaGetter columnX) {
return new FunctionQueryColumn(SQRT, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 e 的 x 次方。
*/
public static QueryColumn exp(String columnX) {
return new FunctionQueryColumn(EXP, columnX);
}
/**
* 返回 e 的 x 次方。
*/
public static QueryColumn exp(QueryColumn columnX) {
return new FunctionQueryColumn(EXP, columnX);
}
/**
* 返回 e 的 x 次方。
*/
public static QueryColumn exp(LambdaGetter columnX) {
return new FunctionQueryColumn(EXP, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(String columnX, String columnY) {
return new FunctionQueryColumn(MOD, columnX, columnY);
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(QueryColumn columnX, QueryColumn columnY) {
return new FunctionQueryColumn(MOD, columnX, columnY);
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(LambdaGetter columnX, LambdaGetter columnY) {
return new FunctionQueryColumn(MOD, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnY));
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(String columnX, Integer y) {
return new FunctionQueryColumn(MOD, new QueryColumn(columnX), number(y));
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(QueryColumn columnX, Integer y) {
return new FunctionQueryColumn(MOD, columnX, number(y));
}
/**
* 返回 x 除以 y 以后的余数。
*/
public static QueryColumn mod(LambdaGetter columnX, Integer y) {
return new FunctionQueryColumn(MOD, LambdaUtil.getQueryColumn(columnX), number(y));
}
/**
* 返回自然对数(以 e 为底的对数)。
*/
public static QueryColumn log(String columnX) {
return new FunctionQueryColumn(LOG, columnX);
}
/**
* 返回自然对数(以 e 为底的对数)。
*/
public static QueryColumn log(QueryColumn columnX) {
return new FunctionQueryColumn(LOG, columnX);
}
/**
* 返回自然对数(以 e 为底的对数)。
*/
public static QueryColumn log(LambdaGetter columnX) {
return new FunctionQueryColumn(LOG, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回以 10 为底的对数。
*/
public static QueryColumn log10(String columnX) {
return new FunctionQueryColumn(LOG10, columnX);
}
/**
* 返回以 10 为底的对数。
*/
public static QueryColumn log10(QueryColumn columnX) {
return new FunctionQueryColumn(LOG10, columnX);
}
/**
* 返回以 10 为底的对数。
*/
public static QueryColumn log10(LambdaGetter columnX) {
return new FunctionQueryColumn(LOG10, LambdaUtil.getQueryColumn(columnX));
}
/**
* 将角度转换为弧度。
*/
public static QueryColumn radians(String columnX) {
return new FunctionQueryColumn(RADIANS, columnX);
}
/**
* 将角度转换为弧度。
*/
public static QueryColumn radians(QueryColumn columnX) {
return new FunctionQueryColumn(RADIANS, columnX);
}
/**
* 将角度转换为弧度。
*/
public static QueryColumn radians(LambdaGetter columnX) {
return new FunctionQueryColumn(RADIANS, LambdaUtil.getQueryColumn(columnX));
}
/**
* 将弧度转换为角度。
*/
public static QueryColumn degrees(String columnX) {
return new FunctionQueryColumn(DEGREES, columnX);
}
/**
* 将弧度转换为角度。
*/
public static QueryColumn degrees(QueryColumn columnX) {
return new FunctionQueryColumn(DEGREES, columnX);
}
/**
* 将弧度转换为角度。
*/
public static QueryColumn degrees(LambdaGetter columnX) {
return new FunctionQueryColumn(DEGREES, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求正弦值。
*/
public static QueryColumn sin(String columnX) {
return new FunctionQueryColumn(SIN, columnX);
}
/**
* 求正弦值。
*/
public static QueryColumn sin(QueryColumn columnX) {
return new FunctionQueryColumn(SIN, columnX);
}
/**
* 求正弦值。
*/
public static QueryColumn sin(LambdaGetter columnX) {
return new FunctionQueryColumn(SIN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求反正弦值。
*/
public static QueryColumn asin(String columnX) {
return new FunctionQueryColumn(ASIN, columnX);
}
/**
* 求反正弦值。
*/
public static QueryColumn asin(QueryColumn columnX) {
return new FunctionQueryColumn(ASIN, columnX);
}
/**
* 求反正弦值。
*/
public static QueryColumn asin(LambdaGetter columnX) {
return new FunctionQueryColumn(ASIN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求余弦值。
*/
public static QueryColumn cos(String columnX) {
return new FunctionQueryColumn(COS, columnX);
}
/**
* 求余弦值。
*/
public static QueryColumn cos(QueryColumn columnX) {
return new FunctionQueryColumn(COS, columnX);
}
/**
* 求余弦值。
*/
public static QueryColumn cos(LambdaGetter columnX) {
return new FunctionQueryColumn(COS, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求反余弦值。
*/
public static QueryColumn acos(String columnX) {
return new FunctionQueryColumn(ACOS, columnX);
}
/**
* 求反余弦值。
*/
public static QueryColumn acos(QueryColumn columnX) {
return new FunctionQueryColumn(ACOS, columnX);
}
/**
* 求反余弦值。
*/
public static QueryColumn acos(LambdaGetter columnX) {
return new FunctionQueryColumn(ACOS, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求正切值。
*/
public static QueryColumn tan(String columnX) {
return new FunctionQueryColumn(TAN, columnX);
}
/**
* 求正切值。
*/
public static QueryColumn tan(QueryColumn columnX) {
return new FunctionQueryColumn(TAN, columnX);
}
/**
* 求正切值。
*/
public static QueryColumn tan(LambdaGetter columnX) {
return new FunctionQueryColumn(TAN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求反正切值。
*/
public static QueryColumn atan(String columnX) {
return new FunctionQueryColumn(ATAN, columnX);
}
/**
* 求反正切值。
*/
public static QueryColumn atan(QueryColumn columnX) {
return new FunctionQueryColumn(ATAN, columnX);
}
/**
* 求反正切值。
*/
public static QueryColumn atan(LambdaGetter columnX) {
return new FunctionQueryColumn(ATAN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 求余切值。
*/
public static QueryColumn cot(String columnX) {
return new FunctionQueryColumn(COT, columnX);
}
/**
* 求余切值。
*/
public static QueryColumn cot(QueryColumn columnX) {
return new FunctionQueryColumn(COT, columnX);
}
/**
* 求余切值。
*/
public static QueryColumn cot(LambdaGetter columnX) {
return new FunctionQueryColumn(COT, LambdaUtil.getQueryColumn(columnX));
}
// === 字符串函数 ===
/**
* 返回字符串 s 的字符数。
*/
public static QueryColumn charLength(String columnS) {
return new FunctionQueryColumn(CHAR_LENGTH, columnS);
}
/**
* 返回字符串 s 的字符数。
*/
public static QueryColumn charLength(QueryColumn columnS) {
return new FunctionQueryColumn(CHAR_LENGTH, columnS);
}
/**
* 返回字符串 s 的字符数。
*/
public static QueryColumn charLength(LambdaGetter columnS) {
return new FunctionQueryColumn(CHAR_LENGTH, LambdaUtil.getQueryColumn(columnS));
}
/**
* 返回字符串 s 的长度。
*/
public static QueryColumn length(String columnS) {
return new FunctionQueryColumn(LENGTH, columnS);
}
/**
* 返回字符串 s 的长度。
*/
public static QueryColumn length(QueryColumn columnS) {
return new FunctionQueryColumn(LENGTH, columnS);
}
/**
* 返回字符串 s 的长度。
*/
public static QueryColumn length(LambdaGetter columnS) {
return new FunctionQueryColumn(LENGTH, LambdaUtil.getQueryColumn(columnS));
}
/**
* 将字符串 s1,s2 等多个字符串合并为一个字符串。
*/
public static QueryColumn concat(String columnS1, String columnS2, String... columnN) {
return new FunctionQueryColumn(CONCAT, ArrayUtil.concat(new String[]{columnS1, columnS2}, columnN));
}
/**
* 将字符串 s1,s2 等多个字符串合并为一个字符串。
*/
public static QueryColumn concat(QueryColumn columnS1, QueryColumn columnS2, QueryColumn... columnN) {
return new FunctionQueryColumn(CONCAT, ArrayUtil.concat(new QueryColumn[]{columnS1, columnS2}, columnN));
}
/**
* 同 CONCAT(s1, s2, ...),但是每个字符串之间要加上 x。
*/
public static QueryColumn concatWs(String columnX, String columnS1, String columnS2, String... columnN) {
return new FunctionQueryColumn(CONCAT_WS, ArrayUtil.concat(new String[]{columnX, columnS1, columnS2}, columnN));
}
/**
* 同 CONCAT(s1, s2, ...),但是每个字符串之间要加上 x。
*/
public static QueryColumn concatWs(QueryColumn columnX, QueryColumn columnS1, QueryColumn columnS2, QueryColumn... columnN) {
return new FunctionQueryColumn(CONCAT_WS, ArrayUtil.concat(new QueryColumn[]{columnX, columnS1, columnS2}, columnN));
}
/**
* 将字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串。
*/
public static QueryColumn insert(String columnS1, String columnX, String columnLen, String columnS2) {
return new FunctionQueryColumn(INSERT, columnS1, columnX, columnLen, columnS2);
}
/**
* 将字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串。
*/
public static QueryColumn insert(QueryColumn columnS1, QueryColumn columnX, QueryColumn columnLen, QueryColumn columnS2) {
return new FunctionQueryColumn(INSERT, columnS1, columnX, columnLen, columnS2);
}
/**
* 将字符串 s 的所有字符都变成大写字母。
*/
public static QueryColumn upper(String columnS) {
return new FunctionQueryColumn(UPPER, columnS);
}
/**
* 将字符串 s 的所有字符都变成大写字母。
*/
public static QueryColumn upper(QueryColumn columnS) {
return new FunctionQueryColumn(UPPER, columnS);
}
/**
* 将字符串 s 的所有字符都变成大写字母。
*/
public static QueryColumn upper(LambdaGetter columnS) {
return new FunctionQueryColumn(UPPER, LambdaUtil.getQueryColumn(columnS));
}
/**
* 将字符串 s 的所有字符都变成小写字母。
*/
public static QueryColumn lower(String columnS) {
return new FunctionQueryColumn(LOWER, columnS);
}
/**
* 将字符串 s 的所有字符都变成小写字母。
*/
public static QueryColumn lower(QueryColumn columnS) {
return new FunctionQueryColumn(LOWER, columnS);
}
/**
* 将字符串 s 的所有字符都变成小写字母。
*/
public static QueryColumn lower(LambdaGetter columnS) {
return new FunctionQueryColumn(LOWER, LambdaUtil.getQueryColumn(columnS));
}
/**
* 返回字符串 s 的前 n 个字符。
*/
public static QueryColumn left(String columnS, int length) {
return new FunctionQueryColumn(LEFT, string(columnS), number(length));
}
/**
* 返回字符串 s 的前 n 个字符。
*/
public static QueryColumn left(QueryColumn columnS, int length) {
return new FunctionQueryColumn(LEFT, columnS, number(length));
}
/**
* 返回字符串 s 的前 n 个字符。
*/
public static QueryColumn left(LambdaGetter columnS, int length) {
return new FunctionQueryColumn(LEFT, LambdaUtil.getQueryColumn(columnS), number(length));
}
/**
* 返回字符串 s 的后 length 个字符。
*/
public static QueryColumn right(String columnS, int length) {
return new FunctionQueryColumn(RIGHT, string(columnS), number(length));
}
/**
* 返回字符串 s 的后 length 个字符。
*/
public static QueryColumn right(QueryColumn columnS, int length) {
return new FunctionQueryColumn(RIGHT, columnS, number(length));
}
/**
* 返回字符串 s 的后 length 个字符。
*/
public static QueryColumn right(LambdaGetter columnS, int length) {
return new FunctionQueryColumn(RIGHT, LambdaUtil.getQueryColumn(columnS), number(length));
}
/**
* 字符串 s2 来填充 s1 的开始处,使字符串长度达到 len。
*/
public static QueryColumn lpad(String columnS1, String columnLen, String columnS2) {
return new FunctionQueryColumn(LPAD, columnS1, columnLen, columnS2);
}
/**
* 字符串 s2 来填充 s1 的开始处,使字符串长度达到 len。
*/
public static QueryColumn lpad(QueryColumn columnS1, QueryColumn columnLen, QueryColumn columnS2) {
return new FunctionQueryColumn(LPAD, columnS1, columnLen, columnS2);
}
/**
* 字符串 s2 来填充 s1 的开始处,使字符串长度达到 len。
*/
public static QueryColumn lpad(LambdaGetter columnS1, LambdaGetter columnLen, LambdaGetter columnS2) {
return new FunctionQueryColumn(LPAD, LambdaUtil.getQueryColumn(columnS1), LambdaUtil.getQueryColumn(columnLen), LambdaUtil.getQueryColumn(columnS2));
}
/**
* 字符串 s2 来填充 s1 的结尾处,使字符串长度达到 len。
*/
public static QueryColumn rpad(String columnS1, String columnLen, String columnS2) {
return new FunctionQueryColumn(RPAD, columnS1, columnLen, columnS2);
}
/**
* 字符串 s2 来填充 s1 的结尾处,使字符串长度达到 len。
*/
public static QueryColumn rpad(QueryColumn columnS1, QueryColumn columnLen, QueryColumn columnS2) {
return new FunctionQueryColumn(RPAD, columnS1, columnLen, columnS2);
}
/**
* 字符串 s2 来填充 s1 的结尾处,使字符串长度达到 len。
*/
public static QueryColumn rpad(LambdaGetter columnS1, LambdaGetter columnLen, LambdaGetter columnS2) {
return new FunctionQueryColumn(RPAD, LambdaUtil.getQueryColumn(columnS1), LambdaUtil.getQueryColumn(columnLen), LambdaUtil.getQueryColumn(columnS2));
}
/**
* 去掉字符串 s 开始处的空格。
*/
public static QueryColumn ltrim(String columnS) {
return new FunctionQueryColumn(LTRIM, columnS);
}
/**
* 去掉字符串 s 开始处的空格。
*/
public static QueryColumn ltrim(QueryColumn columnS) {
return new FunctionQueryColumn(LTRIM, columnS);
}
/**
* 去掉字符串 s 开始处的空格。
*/
public static QueryColumn ltrim(LambdaGetter columnS) {
return new FunctionQueryColumn(LTRIM, LambdaUtil.getQueryColumn(columnS));
}
/**
* 去掉字符串 s 结尾处的空格。
*/
public static QueryColumn rtrim(String columnS) {
return new FunctionQueryColumn(RTRIM, columnS);
}
/**
* 去掉字符串 s 结尾处的空格。
*/
public static QueryColumn rtrim(QueryColumn columnS) {
return new FunctionQueryColumn(RTRIM, columnS);
}
/**
* 去掉字符串 s 结尾处的空格。
*/
public static QueryColumn rtrim(LambdaGetter columnS) {
return new FunctionQueryColumn(RTRIM, LambdaUtil.getQueryColumn(columnS));
}
/**
* 去掉字符串 s 开始处和结尾处的空格。
*/
public static QueryColumn trim(QueryColumn columnS) {
return new FunctionQueryColumn(TRIM, columnS);
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(String columnS, String columnN) {
return new FunctionQueryColumn(REPEAT, columnS, columnN);
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(QueryColumn columnS, QueryColumn columnN) {
return new FunctionQueryColumn(REPEAT, columnS, columnN);
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(LambdaGetter columnS, LambdaGetter columnN) {
return new FunctionQueryColumn(REPEAT, LambdaUtil.getQueryColumn(columnS), LambdaUtil.getQueryColumn(columnN));
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(String columnX, Integer n) {
return new FunctionQueryColumn(REPEAT, new QueryColumn(columnX), number(n));
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(QueryColumn columnX, Integer n) {
return new FunctionQueryColumn(REPEAT, columnX, number(n));
}
/**
* 将字符串 s 重复 n 次。
*/
public static QueryColumn repeat(LambdaGetter columnX, Integer n) {
return new FunctionQueryColumn(REPEAT, LambdaUtil.getQueryColumn(columnX), number(n));
}
/**
* 返回 n 个空格。
*/
public static QueryColumn space(String columnN) {
return new FunctionQueryColumn(SPACE, columnN);
}
/**
* 返回 n 个空格。
*/
public static QueryColumn space(QueryColumn columnN) {
return new FunctionQueryColumn(SPACE, columnN);
}
/**
* 返回 n 个空格。
*/
public static QueryColumn space(LambdaGetter columnN) {
return new FunctionQueryColumn(SPACE, LambdaUtil.getQueryColumn(columnN));
}
/**
* 用字符串 s2 代替字符串 s 中的字符串 s1。
*/
public static QueryColumn replace(String columnS, String columnS1, String columnS2) {
return new StringFunctionQueryColumn(REPLACE, columnS, columnS1, columnS2);
}
/**
* 用字符串 s2 代替字符串 s 中的字符串 s1。
*/
public static QueryColumn replace(QueryColumn columnS, QueryColumn columnS1, QueryColumn columnS2) {
return new FunctionQueryColumn(REPLACE, columnS, columnS1, columnS2);
}
/**
* 用字符串 s2 代替字符串 s 中的字符串 s1。
*/
public static QueryColumn replace(LambdaGetter columnS, LambdaGetter columnS1, LambdaGetter columnS2) {
return new FunctionQueryColumn(REPLACE, LambdaUtil.getQueryColumn(columnS), LambdaUtil.getQueryColumn(columnS1), LambdaUtil.getQueryColumn(columnS2));
}
/**
* 比较字符串 s1 和 s2。
*/
public static QueryColumn strcmp(String columnS1, String columnS2) {
return new FunctionQueryColumn(STRCMP, columnS1, columnS2);
}
/**
* 比较字符串 s1 和 s2。
*/
public static QueryColumn strcmp(QueryColumn columnS1, QueryColumn columnS2) {
return new FunctionQueryColumn(STRCMP, columnS1, columnS2);
}
/**
* 比较字符串 s1 和 s2。
*/
public static QueryColumn strcmp(LambdaGetter columnS1, LambdaGetter columnS2) {
return new FunctionQueryColumn(STRCMP, LambdaUtil.getQueryColumn(columnS1), LambdaUtil.getQueryColumn(columnS2));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(String columnS, int position) {
return new FunctionQueryColumn(SUBSTRING, string(columnS), number(position));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(QueryColumn columnS, int position) {
return new FunctionQueryColumn(SUBSTRING, columnS, number(position));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(LambdaGetter columnS, int position) {
return new FunctionQueryColumn(SUBSTRING, LambdaUtil.getQueryColumn(columnS), number(position));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(String columnS, int position, int length) {
return new FunctionQueryColumn(SUBSTRING, string(columnS), number(position), number(length));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(QueryColumn columnS, int position, int length) {
return new FunctionQueryColumn(SUBSTRING, columnS, number(position), number(length));
}
/**
* 获取从字符串 s 中的第 position 个位置开始长度为 length 的字符串。
*/
public static QueryColumn substring(LambdaGetter columnS, int position, int length) {
return new FunctionQueryColumn(SUBSTRING, LambdaUtil.getQueryColumn(columnS), number(position), number(length));
}
/**
* 从字符串 s 中获取 s1 的开始位置。
*/
public static QueryColumn instr(String columnS, String columnS1) {
return new FunctionQueryColumn(INSTR, columnS, columnS1);
}
/**
* 从字符串 s 中获取 s1 的开始位置。
*/
public static QueryColumn instr(QueryColumn columnS, QueryColumn columnS1) {
return new FunctionQueryColumn(INSTR, columnS, columnS1);
}
/**
* 从字符串 s 中获取 s1 的开始位置。
*/
public static QueryColumn instr(LambdaGetter columnS, LambdaGetter columnS1) {
return new FunctionQueryColumn(INSTR, LambdaUtil.getQueryColumn(columnS), LambdaUtil.getQueryColumn(columnS1));
}
/**
* 将字符串 s 的顺序反过来。
*/
public static QueryColumn reverse(String columnS) {
return new FunctionQueryColumn(REVERSE, columnS);
}
/**
* 将字符串 s 的顺序反过来。
*/
public static QueryColumn reverse(QueryColumn columnS) {
return new FunctionQueryColumn(REVERSE, columnS);
}
/**
* 将字符串 s 的顺序反过来。
*/
public static QueryColumn reverse(LambdaGetter columnS) {
return new FunctionQueryColumn(REVERSE, LambdaUtil.getQueryColumn(columnS));
}
/**
* 返回第 n 个字符串。
*/
public static QueryColumn elt(String columnN, String columnS1, String... columnSn) {
return new FunctionQueryColumn(ELT, ArrayUtil.concat(new String[]{columnN, columnS1}, columnSn));
}
/**
* 返回第 n 个字符串。
*/
public static QueryColumn elt(QueryColumn columnN, QueryColumn columnS1, QueryColumn... columnSn) {
return new FunctionQueryColumn(ELT, ArrayUtil.concat(new QueryColumn[]{columnN, columnS1}, columnSn));
}
/**
* 返回第一个与字符串 s 匹配的字符串的位置。
*/
public static QueryColumn field(String columnS, String columnS1, String... columnSn) {
return new FunctionQueryColumn(FIELD, ArrayUtil.concat(new String[]{columnS, columnS1}, columnSn));
}
/**
* 返回第一个与字符串 s 匹配的字符串的位置。
*/
public static QueryColumn field(QueryColumn columnS, QueryColumn columnS1, QueryColumn... columnSn) {
return new FunctionQueryColumn(FIELD, ArrayUtil.concat(new QueryColumn[]{columnS, columnS1}, columnSn));
}
/**
* 返回在字符串 s2 中与 s1 匹配的字符串的位置。
*/
public static QueryColumn findInSet(String columnS1, String columnS2) {
return new FunctionQueryColumn(FIND_IN_SET, columnS1, columnS2);
}
/**
* 返回在字符串 s2 中与 s1 匹配的字符串的位置。
*/
public static QueryColumn findInSet(QueryColumn columnS1, QueryColumn columnS2) {
return new FunctionQueryColumn(FIND_IN_SET, columnS1, columnS2);
}
/**
* 返回在字符串 s2 中与 s1 匹配的字符串的位置。
*/
public static QueryColumn findInSet(LambdaGetter columnS1, LambdaGetter columnS2) {
return new FunctionQueryColumn(FIND_IN_SET, LambdaUtil.getQueryColumn(columnS1), LambdaUtil.getQueryColumn(columnS2));
}
// === 日期时间函数 ===
/**
* 返回当前日期。
*/
public static QueryColumn curDate() {
return new FunctionQueryColumn(CURDATE);
}
/**
* 返回当前日期。
*/
public static QueryColumn currentDate() {
return new FunctionQueryColumn(CURRENT_DATE);
}
/**
* 返回当前时间。
*/
public static QueryColumn curTime() {
return new FunctionQueryColumn(CURTIME);
}
/**
* 返回当前时间。
*/
public static QueryColumn currentTime() {
return new FunctionQueryColumn(CURRENT_TIME);
}
/**
* 返回当前日期和时间。
*/
public static QueryColumn now() {
return new FunctionQueryColumn(NOW);
}
/**
* SQL SWERVER 返回当前日期和时间。
*/
public static QueryColumn getDate() {
return new FunctionQueryColumn(GET_DATE);
}
/**
* 返回当前日期和时间。
*/
public static QueryColumn currentTimestamp() {
return new FunctionQueryColumn(CURRENT_TIMESTAMP);
}
/**
* 返回当前日期和时间。
*/
public static QueryColumn localTime() {
return new FunctionQueryColumn(LOCALTIME);
}
/**
* 返回当前日期和时间。
*/
public static QueryColumn sysDate() {
return new FunctionQueryColumn(SYSDATE);
}
/**
* 返回当前日期和时间。
*/
public static QueryColumn localTimestamp() {
return new FunctionQueryColumn(LOCALTIMESTAMP);
}
/**
* 以 UNIX 时间戳的形式返回当前时间。
*/
public static QueryColumn unixTimestamp() {
return new FunctionQueryColumn(UNIX_TIMESTAMP);
}
/**
* 将时间 d 以 UNIX 时间戳的形式返回。
*/
public static QueryColumn unixTimestamp(String columnD) {
return new FunctionQueryColumn(UNIX_TIMESTAMP, columnD);
}
/**
* 将时间 d 以 UNIX 时间戳的形式返回。
*/
public static QueryColumn unixTimestamp(QueryColumn columnD) {
return new FunctionQueryColumn(UNIX_TIMESTAMP, columnD);
}
/**
* 将时间 d 以 UNIX 时间戳的形式返回。
*/
public static QueryColumn unixTimestamp(LambdaGetter columnD) {
return new FunctionQueryColumn(UNIX_TIMESTAMP, LambdaUtil.getQueryColumn(columnD));
}
/**
* 把 UNIX 时间戳的时间转换为普通格式的时间。
*/
public static QueryColumn fromUnixTime(String columnD) {
return new FunctionQueryColumn(FROM_UNIXTIME, columnD);
}
/**
* 把 UNIX 时间戳的时间转换为普通格式的时间。
*/
public static QueryColumn fromUnixTime(QueryColumn columnD) {
return new FunctionQueryColumn(FROM_UNIXTIME, columnD);
}
/**
* 把 UNIX 时间戳的时间转换为普通格式的时间。
*/
public static QueryColumn fromUnixTime(LambdaGetter columnD) {
return new FunctionQueryColumn(FROM_UNIXTIME, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回 UTC(国际协调时间)日期。
*/
public static QueryColumn utcDate() {
return new FunctionQueryColumn(UTC_DATE);
}
/**
* 返回 UTC 时间。
*/
public static QueryColumn utcTime() {
return new FunctionQueryColumn(UTC_TIME);
}
/**
* 返回日期 d 中的月份值,范围是 1~12。
*/
public static QueryColumn month(String columnD) {
return new FunctionQueryColumn(MONTH, columnD);
}
/**
* 返回日期 d 中的月份值,范围是 1~12。
*/
public static QueryColumn month(QueryColumn columnD) {
return new FunctionQueryColumn(MONTH, columnD);
}
/**
* 返回日期 d 中的月份值,范围是 1~12。
*/
public static QueryColumn month(LambdaGetter columnD) {
return new FunctionQueryColumn(MONTH, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 中的月份名称,如 january。
*/
public static QueryColumn monthName(String columnD) {
return new FunctionQueryColumn(MONTHNAME, columnD);
}
/**
* 返回日期 d 中的月份名称,如 january。
*/
public static QueryColumn monthName(QueryColumn columnD) {
return new FunctionQueryColumn(MONTHNAME, columnD);
}
/**
* 返回日期 d 中的月份名称,如 january。
*/
public static QueryColumn monthName(LambdaGetter columnD) {
return new FunctionQueryColumn(MONTHNAME, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 是星期几,如 Monday。
*/
public static QueryColumn dayName(String columnD) {
return new FunctionQueryColumn(DAYNAME, columnD);
}
/**
* 返回日期 d 是星期几,如 Monday。
*/
public static QueryColumn dayName(QueryColumn columnD) {
return new FunctionQueryColumn(DAYNAME, columnD);
}
/**
* 返回日期 d 是星期几,如 Monday。
*/
public static QueryColumn dayName(LambdaGetter columnD) {
return new FunctionQueryColumn(DAYNAME, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 是星期几,1 表示星期日,2 表示星期二。
*/
public static QueryColumn dayOfWeek(String columnD) {
return new FunctionQueryColumn(DAYOFWEEK, columnD);
}
/**
* 返回日期 d 是星期几,1 表示星期日,2 表示星期二。
*/
public static QueryColumn dayOfWeek(QueryColumn columnD) {
return new FunctionQueryColumn(DAYOFWEEK, columnD);
}
/**
* 返回日期 d 是星期几,1 表示星期日,2 表示星期二。
*/
public static QueryColumn dayOfWeek(LambdaGetter columnD) {
return new FunctionQueryColumn(DAYOFWEEK, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 是星期几,0 表示星期一,1 表示星期二。
*/
public static QueryColumn weekday(String columnD) {
return new FunctionQueryColumn(WEEKDAY, columnD);
}
/**
* 返回日期 d 是星期几,0 表示星期一,1 表示星期二。
*/
public static QueryColumn weekday(QueryColumn columnD) {
return new FunctionQueryColumn(WEEKDAY, columnD);
}
/**
* 返回日期 d 是星期几,0 表示星期一,1 表示星期二。
*/
public static QueryColumn weekday(LambdaGetter columnD) {
return new FunctionQueryColumn(WEEKDAY, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算日期 d 是本年的第几个星期,范围是 0-53。
*/
public static QueryColumn week(String columnD) {
return new FunctionQueryColumn(WEEK, columnD);
}
/**
* 计算日期 d 是本年的第几个星期,范围是 0-53。
*/
public static QueryColumn week(QueryColumn columnD) {
return new FunctionQueryColumn(WEEK, columnD);
}
/**
* 计算日期 d 是本年的第几个星期,范围是 0-53。
*/
public static QueryColumn week(LambdaGetter columnD) {
return new FunctionQueryColumn(WEEK, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算日期 d 是本年的第几个星期,范围是 1-53。
*/
public static QueryColumn weekOfYear(String columnD) {
return new FunctionQueryColumn(WEEKOFYEAR, columnD);
}
/**
* 计算日期 d 是本年的第几个星期,范围是 1-53。
*/
public static QueryColumn weekOfYear(QueryColumn columnD) {
return new FunctionQueryColumn(WEEKOFYEAR, columnD);
}
/**
* 计算日期 d 是本年的第几个星期,范围是 1-53。
*/
public static QueryColumn weekOfYear(LambdaGetter columnD) {
return new FunctionQueryColumn(WEEKOFYEAR, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算日期 d 是本年的第几天。
*/
public static QueryColumn dayOfYear(String columnD) {
return new FunctionQueryColumn(DAYOFYEAR, columnD);
}
/**
* 计算日期 d 是本年的第几天。
*/
public static QueryColumn dayOfYear(QueryColumn columnD) {
return new FunctionQueryColumn(DAYOFYEAR, columnD);
}
/**
* 计算日期 d 是本年的第几天。
*/
public static QueryColumn dayOfYear(LambdaGetter columnD) {
return new FunctionQueryColumn(DAYOFYEAR, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算日期 d 是本月的第几天。
*/
public static QueryColumn dayOfMonth(String columnD) {
return new FunctionQueryColumn(DAYOFMONTH, columnD);
}
/**
* 计算日期 d 是本月的第几天。
*/
public static QueryColumn dayOfMonth(QueryColumn columnD) {
return new FunctionQueryColumn(DAYOFMONTH, columnD);
}
/**
* 计算日期 d 是本月的第几天。
*/
public static QueryColumn dayOfMonth(LambdaGetter columnD) {
return new FunctionQueryColumn(DAYOFMONTH, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 中的年份值。
*/
public static QueryColumn year(String columnD) {
return new FunctionQueryColumn(YEAR, columnD);
}
/**
* 返回日期 d 中的年份值。
*/
public static QueryColumn year(QueryColumn columnD) {
return new FunctionQueryColumn(YEAR, columnD);
}
/**
* 返回日期 d 中的年份值。
*/
public static QueryColumn year(LambdaGetter columnD) {
return new FunctionQueryColumn(YEAR, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 中的天数值。
*/
public static FunctionQueryColumn day(String columnD) {
return new FunctionQueryColumn(DAY, columnD);
}
/**
* 返回日期 d 中的天数值。
*/
public static FunctionQueryColumn day(QueryColumn columnD) {
return new FunctionQueryColumn(DAY, columnD);
}
/**
* 返回日期 d 中的天数值。
*/
public static FunctionQueryColumn day(LambdaGetter columnD) {
return new FunctionQueryColumn(DAY, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回日期 d 是第几季度,范围 1-4。
*/
public static QueryColumn quarter(String columnD) {
return new FunctionQueryColumn(QUARTER, columnD);
}
/**
* 返回日期 d 是第几季度,范围 1-4。
*/
public static QueryColumn quarter(QueryColumn columnD) {
return new FunctionQueryColumn(QUARTER, columnD);
}
/**
* 返回日期 d 是第几季度,范围 1-4。
*/
public static QueryColumn quarter(LambdaGetter columnD) {
return new FunctionQueryColumn(QUARTER, LambdaUtil.getQueryColumn(columnD));
}
/**
* 返回时间 t 中的小时值。
*/
public static QueryColumn hour(String columnT) {
return new FunctionQueryColumn(HOUR, columnT);
}
/**
* 返回时间 t 中的小时值。
*/
public static QueryColumn hour(QueryColumn columnT) {
return new FunctionQueryColumn(HOUR, columnT);
}
/**
* 返回时间 t 中的小时值。
*/
public static QueryColumn hour(LambdaGetter columnT) {
return new FunctionQueryColumn(HOUR, LambdaUtil.getQueryColumn(columnT));
}
/**
* 返回时间 t 中的分钟值。
*/
public static QueryColumn minute(String columnT) {
return new FunctionQueryColumn(MINUTE, columnT);
}
/**
* 返回时间 t 中的分钟值。
*/
public static QueryColumn minute(QueryColumn columnT) {
return new FunctionQueryColumn(MINUTE, columnT);
}
/**
* 返回时间 t 中的分钟值。
*/
public static QueryColumn minute(LambdaGetter columnT) {
return new FunctionQueryColumn(MINUTE, LambdaUtil.getQueryColumn(columnT));
}
/**
* 返回时间 t 中的秒钟值。
*/
public static QueryColumn second(String columnT) {
return new FunctionQueryColumn(SECOND, columnT);
}
/**
* 返回时间 t 中的秒钟值。
*/
public static QueryColumn second(QueryColumn columnT) {
return new FunctionQueryColumn(SECOND, columnT);
}
/**
* 返回时间 t 中的秒钟值。
*/
public static QueryColumn second(LambdaGetter columnT) {
return new FunctionQueryColumn(SECOND, LambdaUtil.getQueryColumn(columnT));
}
/**
* 将时间 t 转换为秒。
*/
public static QueryColumn timeToSec(String columnT) {
return new FunctionQueryColumn(TIME_TO_SEC, columnT);
}
/**
* 将时间 t 转换为秒。
*/
public static QueryColumn timeToSec(QueryColumn columnT) {
return new FunctionQueryColumn(TIME_TO_SEC, columnT);
}
/**
* 将时间 t 转换为秒。
*/
public static QueryColumn timeToSec(LambdaGetter columnT) {
return new FunctionQueryColumn(TIME_TO_SEC, LambdaUtil.getQueryColumn(columnT));
}
/**
* 将以秒为单位的时间 s 转换为时分秒的格式。
*/
public static QueryColumn secToTime(String columnS) {
return new FunctionQueryColumn(SEC_TO_TIME, columnS);
}
/**
* 将以秒为单位的时间 s 转换为时分秒的格式。
*/
public static QueryColumn secToTime(QueryColumn columnS) {
return new FunctionQueryColumn(SEC_TO_TIME, columnS);
}
/**
* 将以秒为单位的时间 s 转换为时分秒的格式。
*/
public static QueryColumn secToTime(LambdaGetter columnS) {
return new FunctionQueryColumn(SEC_TO_TIME, LambdaUtil.getQueryColumn(columnS));
}
/**
* 计算日期 d 到 0000 年 1 月 1 日的天数。
*/
public static QueryColumn toDays(String columnD) {
return new FunctionQueryColumn(TO_DAYS, columnD);
}
/**
* 计算日期 d 到 0000 年 1 月 1 日的天数。
*/
public static QueryColumn toDays(QueryColumn columnD) {
return new FunctionQueryColumn(TO_DAYS, columnD);
}
/**
* 计算日期 d 到 0000 年 1 月 1 日的天数。
*/
public static QueryColumn toDays(LambdaGetter columnD) {
return new FunctionQueryColumn(TO_DAYS, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算从 0000 年 1 月 1 日开始 n 天后的日期。
*/
public static QueryColumn fromDays(String columnD) {
return new FunctionQueryColumn(FROM_DAYS, columnD);
}
/**
* 计算从 0000 年 1 月 1 日开始 n 天后的日期。
*/
public static QueryColumn fromDays(QueryColumn columnD) {
return new FunctionQueryColumn(FROM_DAYS, columnD);
}
/**
* 计算从 0000 年 1 月 1 日开始 n 天后的日期。
*/
public static QueryColumn fromDays(LambdaGetter columnD) {
return new FunctionQueryColumn(FROM_DAYS, LambdaUtil.getQueryColumn(columnD));
}
/**
* 计算日期 d1 到 d2 之间相隔的天数。
*/
public static QueryColumn dateDiff(String columnD1, String columnD2) {
return new FunctionQueryColumn(DATEDIFF, columnD1, columnD2);
}
/**
* 计算日期 d1 到 d2 之间相隔的天数。
*/
public static QueryColumn dateDiff(QueryColumn columnD1, QueryColumn columnD2) {
return new FunctionQueryColumn(DATEDIFF, columnD1, columnD2);
}
/**
* 计算日期 d1 到 d2 之间相隔的天数。
*/
public static QueryColumn dateDiff(LambdaGetter columnD1, LambdaGetter columnD2) {
return new FunctionQueryColumn(DATEDIFF, LambdaUtil.getQueryColumn(columnD1), LambdaUtil.getQueryColumn(columnD2));
}
/**
* 计算开始日期 d 加上 n 天的日期。
*/
public static QueryColumn addDate(String columnD, String columnN) {
return new FunctionQueryColumn(ADDDATE, columnD, columnN);
}
/**
* 计算开始日期 d 加上 n 天的日期。
*/
public static QueryColumn addDate(QueryColumn columnD, QueryColumn columnN) {
return new FunctionQueryColumn(ADDDATE, columnD, columnN);
}
/**
* 计算开始日期 d 加上 n 天的日期。
*/
public static QueryColumn addDate(LambdaGetter columnD, LambdaGetter columnN) {
return new FunctionQueryColumn(ADDDATE, LambdaUtil.getQueryColumn(columnD), LambdaUtil.getQueryColumn(columnN));
}
/**
* 计算起始日期 d 减去 n 天的日期。
*/
public static QueryColumn subDate(String columnD, String columnN) {
return new FunctionQueryColumn(SUBDATE, columnD, columnN);
}
/**
* 计算起始日期 d 减去 n 天的日期。
*/
public static QueryColumn subDate(QueryColumn columnD, QueryColumn columnN) {
return new FunctionQueryColumn(SUBDATE, columnD, columnN);
}
/**
* 计算起始日期 d 减去 n 天的日期。
*/
public static QueryColumn subDate(LambdaGetter columnD, LambdaGetter columnN) {
return new FunctionQueryColumn(SUBDATE, LambdaUtil.getQueryColumn(columnD), LambdaUtil.getQueryColumn(columnN));
}
/**
* 计算起始时间 t 加上 n 秒的时间。
*/
public static QueryColumn addTime(String columnT, String columnN) {
return new FunctionQueryColumn(ADDTIME, columnT, columnN);
}
/**
* 计算起始时间 t 加上 n 秒的时间。
*/
public static QueryColumn addTime(QueryColumn columnT, QueryColumn columnN) {
return new FunctionQueryColumn(ADDTIME, columnT, columnN);
}
/**
* 计算起始时间 t 加上 n 秒的时间。
*/
public static QueryColumn addTime(LambdaGetter columnT, LambdaGetter columnN) {
return new FunctionQueryColumn(ADDTIME, LambdaUtil.getQueryColumn(columnT), LambdaUtil.getQueryColumn(columnN));
}
/**
* 计算起始时间 t 减去 n 秒的时间。
*/
public static QueryColumn subTime(String columnT, String columnN) {
return new FunctionQueryColumn(SUBTIME, columnT, columnN);
}
/**
* 计算起始时间 t 减去 n 秒的时间。
*/
public static QueryColumn subTime(QueryColumn columnT, QueryColumn columnN) {
return new FunctionQueryColumn(SUBTIME, columnT, columnN);
}
/**
* 计算起始时间 t 减去 n 秒的时间。
*/
public static QueryColumn subTime(LambdaGetter columnT, LambdaGetter columnN) {
return new FunctionQueryColumn(SUBTIME, LambdaUtil.getQueryColumn(columnT), LambdaUtil.getQueryColumn(columnN));
}
/**
* 按照表达式 f 的要求显示日期 d。
*/
public static QueryColumn dateFormat(String columnD, String format) {
return new FunctionQueryColumn(DATE_FORMAT, string(columnD), string(format));
}
/**
* 按照表达式 f 的要求显示日期 d。
*/
public static QueryColumn dateFormat(QueryColumn columnD, String format) {
return new FunctionQueryColumn(DATE_FORMAT, columnD, string(format));
}
/**
* 按照表达式 f 的要求显示日期 d。
*/
public static QueryColumn dateFormat(LambdaGetter columnD, String format) {
return new FunctionQueryColumn(DATE_FORMAT, LambdaUtil.getQueryColumn(columnD), string(format));
}
/**
* 按照表达式 f 的要求显示时间 t。
*/
public static QueryColumn timeFormat(String columnT, String columnF) {
return new FunctionQueryColumn(TIME_FORMAT, columnT, columnF);
}
/**
* 按照表达式 f 的要求显示时间 t。
*/
public static QueryColumn timeFormat(QueryColumn columnT, QueryColumn columnF) {
return new FunctionQueryColumn(TIME_FORMAT, columnT, columnF);
}
/**
* 按照表达式 f 的要求显示时间 t。
*/
public static QueryColumn timeFormat(LambdaGetter columnT, LambdaGetter columnF) {
return new FunctionQueryColumn(TIME_FORMAT, LambdaUtil.getQueryColumn(columnT), LambdaUtil.getQueryColumn(columnF));
}
/**
* 根据字符串 s 获取 type 类型数据的显示格式。
*/
public static QueryColumn getFormat(String columnType, String columnS) {
return new FunctionQueryColumn(GET_FORMAT, columnType, columnS);
}
/**
* 根据字符串 s 获取 type 类型数据的显示格式。
*/
public static QueryColumn getFormat(QueryColumn columnType, QueryColumn columnS) {
return new FunctionQueryColumn(GET_FORMAT, columnType, columnS);
}
/**
* 根据字符串 s 获取 type 类型数据的显示格式。
*/
public static QueryColumn getFormat(LambdaGetter columnType, LambdaGetter columnS) {
return new FunctionQueryColumn(GET_FORMAT, LambdaUtil.getQueryColumn(columnType), LambdaUtil.getQueryColumn(columnS));
}
// === 系统信息函数 ===
/**
* 返回数据库的版本号。
*/
public static QueryColumn version() {
return new FunctionQueryColumn(VERSION);
}
/**
* 返回服务器的连接数。
*/
public static QueryColumn connectionId() {
return new FunctionQueryColumn(CONNECTION_ID);
}
/**
* 返回当前数据库名。
*/
public static QueryColumn database() {
return new FunctionQueryColumn(DATABASE);
}
/**
* 返回当前数据库 schema。
*/
public static QueryColumn schema() {
return new FunctionQueryColumn(SCHEMA);
}
/**
* 返回当前用户的名称。
*/
public static QueryColumn user() {
return new FunctionQueryColumn(USER);
}
/**
* 返回字符串 str 的字符集。
*/
public static QueryColumn charset(String columnStr) {
return new FunctionQueryColumn(CHARSET, columnStr);
}
/**
* 返回字符串 str 的字符集。
*/
public static QueryColumn charset(QueryColumn columnStr) {
return new FunctionQueryColumn(CHARSET, columnStr);
}
/**
* 返回字符串 str 的字符集。
*/
public static QueryColumn charset(LambdaGetter columnStr) {
return new FunctionQueryColumn(CHARSET, LambdaUtil.getQueryColumn(columnStr));
}
/**
* 返回字符串 str 的字符排列方式。
*/
public static QueryColumn collation(String columnStr) {
return new FunctionQueryColumn(COLLATION, columnStr);
}
/**
* 返回字符串 str 的字符排列方式。
*/
public static QueryColumn collation(QueryColumn columnStr) {
return new FunctionQueryColumn(COLLATION, columnStr);
}
/**
* 返回字符串 str 的字符排列方式。
*/
public static QueryColumn collation(LambdaGetter columnStr) {
return new FunctionQueryColumn(COLLATION, LambdaUtil.getQueryColumn(columnStr));
}
/**
* 返回最后生成的 auto_increment 值。
*/
public static QueryColumn lastInsertId() {
return new FunctionQueryColumn(LAST_INSERT_ID);
}
// === 加密函数 ===
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn password(String columnStr) {
return new FunctionQueryColumn(PASSWORD, columnStr);
}
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn password(QueryColumn columnStr) {
return new FunctionQueryColumn(PASSWORD, columnStr);
}
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn password(LambdaGetter columnStr) {
return new FunctionQueryColumn(PASSWORD, LambdaUtil.getQueryColumn(columnStr));
}
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn md5(String columnStr) {
return new FunctionQueryColumn(MD5, columnStr);
}
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn md5(QueryColumn columnStr) {
return new FunctionQueryColumn(MD5, columnStr);
}
/**
* 对字符串 str 进行加密。
*/
public static QueryColumn md5(LambdaGetter columnStr) {
return new FunctionQueryColumn(MD5, LambdaUtil.getQueryColumn(columnStr));
}
/**
* 使用字符串 pswd_str 来加密字符串 str,加密结果是一个二进制数,必须使用 BLOB 类型来保持它。
*/
public static QueryColumn encode(String columnStr, String columnPswdStr) {
return new FunctionQueryColumn(ENCODE, columnStr, columnPswdStr);
}
/**
* 使用字符串 pswd_str 来加密字符串 str,加密结果是一个二进制数,必须使用 BLOB 类型来保持它。
*/
public static QueryColumn encode(QueryColumn columnStr, QueryColumn columnPswdStr) {
return new FunctionQueryColumn(ENCODE, columnStr, columnPswdStr);
}
/**
* 使用字符串 pswd_str 来加密字符串 str,加密结果是一个二进制数,必须使用 BLOB 类型来保持它。
*/
public static QueryColumn encode(LambdaGetter columnStr, LambdaGetter columnPswdStr) {
return new FunctionQueryColumn(ENCODE, LambdaUtil.getQueryColumn(columnStr), LambdaUtil.getQueryColumn(columnPswdStr));
}
/**
* 解密函数,使用字符串 pswd_str 来为 crypt_str 解密。
*/
public static QueryColumn decode(String columnCryptStr, String columnPswdStr) {
return new FunctionQueryColumn(DECODE, columnCryptStr, columnPswdStr);
}
/**
* 解密函数,使用字符串 pswd_str 来为 crypt_str 解密。
*/
public static QueryColumn decode(QueryColumn columnCryptStr, QueryColumn columnPswdStr) {
return new FunctionQueryColumn(DECODE, columnCryptStr, columnPswdStr);
}
/**
* 解密函数,使用字符串 pswd_str 来为 crypt_str 解密。
*/
public static QueryColumn decode(LambdaGetter columnCryptStr, LambdaGetter columnPswdStr) {
return new FunctionQueryColumn(DECODE, LambdaUtil.getQueryColumn(columnCryptStr), LambdaUtil.getQueryColumn(columnPswdStr));
}
// === 其他函数 ===
/**
* 格式化函数,可以将数字 x 进行格式化,将 x 保留到小数点后 n 位,这个过程需要进行四舍五入。
*/
public static QueryColumn format(String columnX, String columnN) {
return new FunctionQueryColumn(FORMAT, columnX, columnN);
}
/**
* 格式化函数,可以将数字 x 进行格式化,将 x 保留到小数点后 n 位,这个过程需要进行四舍五入。
*/
public static QueryColumn format(QueryColumn columnX, QueryColumn columnN) {
return new FunctionQueryColumn(FORMAT, columnX, columnN);
}
/**
* 格式化函数,可以将数字 x 进行格式化,将 x 保留到小数点后 n 位,这个过程需要进行四舍五入。
*/
public static QueryColumn format(LambdaGetter columnX, LambdaGetter columnN) {
return new FunctionQueryColumn(FORMAT, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnN));
}
/**
* 返回字符串 s 的第一个字符的 ASSCII 码。
*/
public static QueryColumn ascii(String columnS) {
return new FunctionQueryColumn(ASCII, columnS);
}
/**
* 返回字符串 s 的第一个字符的 ASSCII 码。
*/
public static QueryColumn ascii(QueryColumn columnS) {
return new FunctionQueryColumn(ASCII, columnS);
}
/**
* 返回字符串 s 的第一个字符的 ASSCII 码。
*/
public static QueryColumn ascii(LambdaGetter columnS) {
return new FunctionQueryColumn(ASCII, LambdaUtil.getQueryColumn(columnS));
}
/**
* 返回 x 的二进制编码。
*/
public static QueryColumn bin(String columnX) {
return new FunctionQueryColumn(BIN, columnX);
}
/**
* 返回 x 的二进制编码。
*/
public static QueryColumn bin(QueryColumn columnX) {
return new FunctionQueryColumn(BIN, columnX);
}
/**
* 返回 x 的二进制编码。
*/
public static QueryColumn bin(LambdaGetter columnX) {
return new FunctionQueryColumn(BIN, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 x 的十六进制编码。
*/
public static QueryColumn hex(String columnX) {
return new FunctionQueryColumn(HEX, columnX);
}
/**
* 返回 x 的十六进制编码。
*/
public static QueryColumn hex(QueryColumn columnX) {
return new FunctionQueryColumn(HEX, columnX);
}
/**
* 返回 x 的十六进制编码。
*/
public static QueryColumn hex(LambdaGetter columnX) {
return new FunctionQueryColumn(HEX, LambdaUtil.getQueryColumn(columnX));
}
/**
* 返回 x 的八进制编码。
*/
public static QueryColumn oct(String columnX) {
return new FunctionQueryColumn(OCT, columnX);
}
/**
* 返回 x 的八进制编码。
*/
public static QueryColumn oct(QueryColumn columnX) {
return new FunctionQueryColumn(OCT, columnX);
}
/**
* 返回 x 的八进制编码。
*/
public static QueryColumn oct(LambdaGetter columnX) {
return new FunctionQueryColumn(OCT, LambdaUtil.getQueryColumn(columnX));
}
/**
* 将 x 从 f1 进制数变成 f2 进制数。
*/
public static QueryColumn conv(String columnX, String columnF1, String columnF2) {
return new FunctionQueryColumn(CONV, columnX, columnF1, columnF2);
}
/**
* 将 x 从 f1 进制数变成 f2 进制数。
*/
public static QueryColumn conv(QueryColumn columnX, QueryColumn columnF1, QueryColumn columnF2) {
return new FunctionQueryColumn(CONV, columnX, columnF1, columnF2);
}
/**
* 将 x 从 f1 进制数变成 f2 进制数。
*/
public static QueryColumn conv(LambdaGetter columnX, LambdaGetter columnF1, LambdaGetter columnF2) {
return new FunctionQueryColumn(CONV, LambdaUtil.getQueryColumn(columnX), LambdaUtil.getQueryColumn(columnF1), LambdaUtil.getQueryColumn(columnF2));
}
/**
* 将 IP 地址转换为数字表示,IP 值需要加上引号。
*/
public static QueryColumn inetAton(String columnIP) {
return new FunctionQueryColumn(INET_ATON, columnIP);
}
/**
* 将 IP 地址转换为数字表示,IP 值需要加上引号。
*/
public static QueryColumn inetAton(QueryColumn columnIP) {
return new FunctionQueryColumn(INET_ATON, columnIP);
}
/**
* 将 IP 地址转换为数字表示,IP 值需要加上引号。
*/
public static QueryColumn inetAton(LambdaGetter columnIP) {
return new FunctionQueryColumn(INET_ATON, LambdaUtil.getQueryColumn(columnIP));
}
/**
* 可以将数字 n 转换成 IP 的形式。
*/
public static QueryColumn inetNtoa(String columnN) {
return new FunctionQueryColumn(INET_NTOA, columnN);
}
/**
* 可以将数字 n 转换成 IP 的形式。
*/
public static QueryColumn inetNtoa(QueryColumn columnN) {
return new FunctionQueryColumn(INET_NTOA, columnN);
}
/**
* 可以将数字 n 转换成 IP 的形式。
*/
public static QueryColumn inetNtoa(LambdaGetter columnN) {
return new FunctionQueryColumn(INET_NTOA, LambdaUtil.getQueryColumn(columnN));
}
// === 聚合函数 ===
/**
* 返回指定列的最大值。
*/
public static FunctionQueryColumn max(String column) {
return new FunctionQueryColumn(MAX, column);
}
/**
* 返回指定列的最大值。
*/
public static FunctionQueryColumn max(QueryColumn column) {
return new FunctionQueryColumn(MAX, column);
}
/**
* 返回指定列的最大值。
*/
public static FunctionQueryColumn max(LambdaGetter column) {
return new FunctionQueryColumn(MAX, LambdaUtil.getQueryColumn(column));
}
/**
* 返回指定列的最小值。
*/
public static FunctionQueryColumn min(String column) {
return new FunctionQueryColumn(MIN, column);
}
/**
* 返回指定列的最小值。
*/
public static FunctionQueryColumn min(QueryColumn column) {
return new FunctionQueryColumn(MIN, column);
}
/**
* 返回指定列的最小值。
*/
public static FunctionQueryColumn min(LambdaGetter column) {
return new FunctionQueryColumn(MIN, LambdaUtil.getQueryColumn(column));
}
/**
* 返回指定列的平均值。
*/
public static FunctionQueryColumn avg(String column) {
return new FunctionQueryColumn(AVG, column);
}
/**
* 返回指定列的平均值。
*/
public static FunctionQueryColumn avg(QueryColumn column) {
return new FunctionQueryColumn(AVG, column);
}
/**
* 返回指定列的平均值。
*/
public static FunctionQueryColumn avg(LambdaGetter column) {
return new FunctionQueryColumn(AVG, LambdaUtil.getQueryColumn(column));
}
/**
* 返回指定字段值的和。
*/
public static FunctionQueryColumn sum(String column) {
return new FunctionQueryColumn(SUM, column);
}
/**
* 返回指定字段值的和。
*/
public static FunctionQueryColumn sum(QueryColumn column) {
return new FunctionQueryColumn(SUM, column);
}
/**
* 返回指定字段值的和。
*/
public static FunctionQueryColumn sum(LambdaGetter column) {
return new FunctionQueryColumn(SUM, LambdaUtil.getQueryColumn(column));
}
// === COUNT ===
/**
* 返回指定列的总行数。
*/
public static FunctionQueryColumn count() {
return new FunctionQueryColumn(COUNT, new RawQueryColumn("*"));
}
/**
* 返回指定列的总行数。
*/
public static FunctionQueryColumn count(String column) {
return new FunctionQueryColumn(COUNT, column);
}
/**
* 返回指定列的总行数。
*/
public static FunctionQueryColumn count(QueryColumn column) {
return new FunctionQueryColumn(COUNT, column);
}
/**
* 返回指定列的总行数。
*/
public static FunctionQueryColumn count(LambdaGetter column) {
return new FunctionQueryColumn(COUNT, LambdaUtil.getQueryColumn(column));
}
// === DISTINCT ===
/**
* 对指定列进行去重。
*/
public static DistinctQueryColumn distinct(QueryColumn... columns) {
return new DistinctQueryColumn(columns);
}
@SafeVarargs
public static DistinctQueryColumn distinct(LambdaGetter... columns) {
return new DistinctQueryColumn(Arrays.stream(columns)
.map(LambdaUtil::getQueryColumn).toArray(QueryColumn[]::new));
}
// === CASE THEN ELSE ===
/**
* 构建 case then when 语句。
*/
public static CaseQueryColumn.Builder case_() {
return new CaseQueryColumn.Builder();
}
/**
* 构建 case then when 语句。
*/
public static CaseSearchQueryColumn.Builder case_(QueryColumn column) {
return new CaseSearchQueryColumn.Builder(column);
}
// === CONVERT ===
/**
* 将所给类型类型转换为另一种类型。
*/
public static StringFunctionQueryColumn convert(String... params) {
return new StringFunctionQueryColumn(CONVERT, params);
}
// === 构建 column 列 ===
/**
* 构建 TRUE 常量。
*/
public static QueryColumn true_() {
return new RawQueryColumn("TRUE");
}
/**
* 构建 FALSE 常量。
*/
public static QueryColumn false_() {
return new RawQueryColumn("FALSE");
}
/**
* 构建 NULL 常量。
*/
public static QueryColumn null_() {
return new RawQueryColumn("NULL");
}
/**
* 构建数字常量。
*/
public static QueryColumn number(Number n) {
return new RawQueryColumn(n);
}
/**
* 构建数字常量。
*/
public static QueryColumn string(String s) {
return new RawQueryColumn("'" + s + "'");
}
/**
* 构建相反数。
*/
public static QueryColumn negative(QueryColumn queryColumn) {
return new NegativeQueryColumn(queryColumn);
}
/**
* 构建自定义列。
*/
public static QueryColumn column(String column, Object... params) {
return new RawQueryColumn(column, params);
}
/**
* 构建自定义列。
*/
public static QueryColumn column(String table, String column) {
return new QueryColumn(table, column);
}
/**
* 构建自定义列。
*/
public static QueryColumn column(String schema, String table, String column) {
return new QueryColumn(schema, table, column);
}
/**
* 构建自定义列。
*/
public static QueryColumn column(LambdaGetter column) {
return LambdaUtil.getQueryColumn(column);
}
/**
* 构建自定义列。
*/
public static QueryColumn column(QueryWrapper queryWrapper) {
return new SelectQueryColumn(queryWrapper);
}
/**
* 构建所有列。
*/
public static QueryColumn allColumns() {
return column("*");
}
/**
* 构建所有列。
*/
public static Iterable allColumns(Class>... classes) {
List queryColumns = new ArrayList<>(classes.length);
for (Class> aClass : classes) {
TableInfo tableInfo = TableInfoFactory.ofEntityClass(aClass);
QueryTable queryTable = new QueryTable(tableInfo.getSchema(), tableInfo.getTableName());
queryColumns.add(new QueryColumn(queryTable, "*"));
}
return queryColumns;
}
/**
* 构建默认列。
*/
public static Iterable defaultColumns(Class>... classes) {
List queryColumns = new ArrayList<>();
for (Class> aClass : classes) {
TableInfo tableInfo = TableInfoFactory.ofEntityClass(aClass);
queryColumns.addAll(tableInfo.getDefaultQueryColumn());
}
return queryColumns;
}
// === IF 函数 ===
/**
* IF 函数。
*/
public static QueryColumn if_(QueryCondition condition, String trueColumn, String falseColumn) {
return new IfFunctionQueryColumn(condition, new QueryColumn(trueColumn), new QueryColumn(falseColumn));
}
/**
* IF 函数。
*/
public static QueryColumn if_(QueryCondition condition, QueryColumn trueColumn, QueryColumn falseColumn) {
return new IfFunctionQueryColumn(condition, trueColumn, falseColumn);
}
/**
* IF 函数。
*/
public static QueryColumn if_(QueryCondition condition, LambdaGetter trueColumn, LambdaGetter falseColumn) {
return new IfFunctionQueryColumn(condition, LambdaUtil.getQueryColumn(trueColumn), LambdaUtil.getQueryColumn(falseColumn));
}
/**
* IFNULL 函数。
*/
public static QueryColumn ifNull(String nullColumn, String elseColumn) {
return new FunctionQueryColumn("IFNULL", new QueryColumn(nullColumn), new QueryColumn(elseColumn));
}
/**
* IFNULL 函数。
*/
public static QueryColumn ifNull(QueryColumn nullColumn, QueryColumn elseColumn) {
return new FunctionQueryColumn("IFNULL", nullColumn, elseColumn);
}
/**
* IFNULL 函数。
*/
public static QueryColumn ifNull(LambdaGetter nullColumn, LambdaGetter elseColumn) {
return new FunctionQueryColumn("IFNULL", LambdaUtil.getQueryColumn(nullColumn), LambdaUtil.getQueryColumn(elseColumn));
}
/**
* IFNULL 函数。
*/
public static QueryColumn ifNull(LambdaGetter nullColumn, QueryColumn elseColumn) {
return ifNull(LambdaUtil.getQueryColumn(nullColumn), elseColumn);
}
/**
* IFNULL 函数。
*/
public static QueryColumn ifNull(LambdaGetter nullColumn, String elseColumn) {
return ifNull(nullColumn, new QueryColumn(elseColumn));
}
// === 构建 QueryCondition 查询条件 ===
/**
* EXIST (SELECT ...)
*/
public static QueryCondition exists(QueryWrapper queryWrapper) {
return new OperatorSelectCondition("EXISTS ", queryWrapper);
}
/**
* NOT EXIST (SELECT ...)
*/
public static QueryCondition notExists(QueryWrapper queryWrapper) {
return new OperatorSelectCondition("NOT EXISTS ", queryWrapper);
}
/**
* NOT (id = 1)
*/
public static QueryCondition not(QueryCondition childCondition) {
return new OperatorQueryCondition("NOT ", childCondition);
}
/**
* {@code NOT (column)} 或 {@code NOT column}
*/
public static QueryColumn not(LambdaGetter column) {
return new FunctionQueryColumn("NOT", LambdaUtil.getQueryColumn(column));
}
/**
* 空条件。
*/
public static QueryCondition noCondition() {
return QueryCondition.createEmpty();
}
/**
* 括号条件。
*/
public static QueryCondition bracket(QueryCondition condition) {
return new Brackets(condition);
}
// === 构建 QueryWrapper 查询 ===
/**
* SELECT queryColumns FROM table
*/
public static QueryWrapper select(QueryColumn... queryColumns) {
return newWrapper().select(queryColumns);
}
/**
* SELECT * FROM table UNION SELECT ...
*/
public static QueryWrapper union(QueryWrapper queryWrapper) {
return newWrapper().union(queryWrapper);
}
/**
* SELECT 1 as temp_one FROM table
*/
public static QueryWrapper selectOne() {
return select(column("1").as("temp_one"));
}
/**
* SELECT COUNT(*) as temp_count FROM table
*/
public static QueryWrapper selectCount() {
return select(count().as("temp_count"));
}
/**
* SELECT COUNT(1) as temp_count_one FROM table
*/
public static QueryWrapper selectCountOne() {
return select(count(new RawQueryColumn("1")).as("temp_count_one"));
}
/**
* SELECT * FROM table
*/
private static QueryWrapper newWrapper() {
return new QueryWrapper();
}
// 构建原生 SQL 条件
/**
* 构建原生查询条件。
*/
public static QueryCondition raw(String raw) {
return new RawQueryCondition(raw);
}
/**
* 构建原生查询条件,并附带参数。
*/
public static QueryCondition raw(String raw, Object... params) {
return new RawQueryCondition(raw, params);
}
/**
* 分组值拼接
*/
public static QueryColumn groupConcat(QueryColumn columnX) {
return new FunctionQueryColumn(GROUP_CONCAT, columnX);
}
/**
* date 函数
* @return
*/
public static FunctionQueryColumn date(QueryColumn column) {
return new FunctionQueryColumn("DATE", column);
}
}