|
@@ -0,0 +1,184 @@
|
|
|
+package org.example.join.domain;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
+import org.example.join.util.SqlConstant;
|
|
|
+
|
|
|
+/**
|
|
|
+ * SQL 函数。
|
|
|
+ */
|
|
|
+public class QueryMethods {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 绝对值
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn abs(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.ABS, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 平均值
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn avg(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.AVG, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数量
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn count(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.COUNT, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将字符串 s1,s2 等多个字符串合并为一个字符串。
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn concat(String queryColumnS1, String queryColumnS2, String... columnN) {
|
|
|
+ RawQueryColumn[] rawQueryColumns = new RawQueryColumn[columnN.length];
|
|
|
+ for (int i = 0; i < columnN.length; i++) {
|
|
|
+ rawQueryColumns[i] = string(columnN[i]);
|
|
|
+ }
|
|
|
+ return new FunctionQueryColumn(SqlConstant.CONCAT, ArrayUtil.addAll(new RawQueryColumn[]{string(queryColumnS1), string(queryColumnS2)}, rawQueryColumns));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将字符串 s1,s2 等多个字符串合并为一个字符串。
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn concat(IQueryColumn queryColumnS1, IQueryColumn queryColumnS2, IQueryColumn... columnN) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.CONCAT, ArrayUtil.addAll(new IQueryColumn[]{queryColumnS1, queryColumnS2}, columnN));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算两个时间相差天数
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn dateDiff(IQueryColumn queryColumn1, IQueryColumn queryColumn2) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.DATEDIFF, queryColumn1, queryColumn2);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算两个时间相差天数
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn dateDiff(IQueryColumn queryColumn1, String queryColumn2) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.DATEDIFF, queryColumn1, string(queryColumn2));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 日期格式
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn dateFormat(IQueryColumn queryColumn, String format) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.DATE_FORMAT, queryColumn, string(format));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 日期格式
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn dateFormat(String queryColumn, String format) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.DATE_FORMAT, string(queryColumn), string(format));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断值是否为null
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn ifNull(IQueryColumn nullColumn, IQueryColumn elseColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.IFNULL, nullColumn, elseColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断值是否为null
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn ifNull(String nullColumn, String elseColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.IFNULL, new RawQueryColumn(nullColumn), new RawQueryColumn(elseColumn));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大值
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn max(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.MAX, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最小值
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn min(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.MIN, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前系统时间
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn now() {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.NOW);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 替换字符串
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn replace(IQueryColumn queryColumn, String fromColumn, String toColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.REPLACE, queryColumn, string(fromColumn), string(toColumn));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 四舍五入
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn round(IQueryColumn queryColumn, Number number) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.ROUND, queryColumn, number(number));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 截取字符串
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn substr(IQueryColumn queryColumn, int position) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.SUBSTR, queryColumn, number(position));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 截取字符串
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn substr(IQueryColumn queryColumn, int position, int length) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.SUBSTR, queryColumn, number(position), number(length));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取年
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn year(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.YEAR, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取月
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn month(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.MONTH, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取日
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn day(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.DAY, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取小时
|
|
|
+ */
|
|
|
+ public static FunctionQueryColumn hour(IQueryColumn queryColumn) {
|
|
|
+ return new FunctionQueryColumn(SqlConstant.HOUR, queryColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建数字常量。
|
|
|
+ */
|
|
|
+ public static RawQueryColumn number(Number n) {
|
|
|
+ return new RawQueryColumn(n);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建字符常量。
|
|
|
+ */
|
|
|
+ public static RawQueryColumn string(String s) {
|
|
|
+ return new RawQueryColumn("'" + s + "'");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|