001/*
002 *  Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
003 *  <p>
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *  <p>
008 *  http://www.apache.org/licenses/LICENSE-2.0
009 *  <p>
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016
017package com.mybatisflex.core.constant;
018
019/**
020 * SQL 构建常量池。
021 *
022 * @author 王帅
023 * @since 2023-06-12
024 */
025public final class SqlConsts {
026
027    private SqlConsts() {
028    }
029
030    // === 常用符号 ===
031
032    public static final String EMPTY = "";
033    public static final String BLANK = " ";
034    public static final String ASTERISK = "*";
035    public static final String REFERENCE = ".";
036    public static final String SEMICOLON = ";";
037    public static final String DELIMITER = ", ";
038    public static final String PLACEHOLDER = "?";
039    public static final String PERCENT_SIGN = "%";
040    public static final String SINGLE_QUOTE = "'";
041    public static final String BRACKET_LEFT = "(";
042    public static final String BRACKET_RIGHT = ")";
043    public static final String HINT_START = "/*+ ";
044    public static final String HINT_END = " */ ";
045
046
047    // === SQL 关键字 ===
048
049    public static final String AS = " AS ";
050    public static final String OR = " OR ";
051    public static final String END = " END";
052    public static final String AND = " AND ";
053    public static final String SET = " SET ";
054    public static final String CASE = "CASE";
055    public static final String WHEN = " WHEN ";
056    public static final String THEN = " THEN ";
057    public static final String ELSE = " ELSE ";
058    public static final String FROM = " FROM ";
059    public static final String WHERE = " WHERE ";
060    public static final String SELECT = "SELECT ";
061    public static final String VALUES = " VALUES ";
062    public static final String DELETE = "DELETE";
063    public static final String UPDATE = "UPDATE ";
064    public static final String HAVING = " HAVING ";
065    public static final String DISTINCT = "DISTINCT ";
066    public static final String GROUP_BY = " GROUP BY ";
067    public static final String ORDER_BY = " ORDER BY ";
068    public static final String INSERT = "INSERT";
069    public static final String INTO = " INTO ";
070    public static final String WITH = "WITH ";
071    public static final String RECURSIVE = "RECURSIVE ";
072    public static final String INSERT_INTO = INSERT + INTO;
073    public static final String DELETE_FROM = DELETE + FROM;
074    public static final String SELECT_ALL_FROM = SELECT + ASTERISK + FROM;
075
076
077    // === Oracle SQl ===
078
079    public static final String INSERT_ALL = "INSERT ALL ";
080    public static final String INSERT_ALL_END = " SELECT 1 FROM DUAL";
081
082
083    // === Limit Offset ===
084
085    public static final String TO = " TO ";
086    public static final String TOP = " TOP ";
087    public static final String ROWS = " ROWS ";
088    public static final String SKIP = " SKIP ";
089    public static final String FIRST = " FIRST ";
090    public static final String LIMIT = " LIMIT ";
091    public static final String OFFSET = " OFFSET ";
092    public static final String START_AT = " START AT ";
093    public static final String ROWS_ONLY = " ROWS ONLY";
094    public static final String ROWS_FETCH_NEXT = " ROWS FETCH NEXT ";
095
096
097    // === 联表查询关键字 ===
098
099    public static final String ON = " ON ";
100    public static final String JOIN = " JOIN ";
101    public static final String UNION = " UNION ";
102    public static final String UNION_ALL = " UNION ALL ";
103    public static final String LEFT_JOIN = " LEFT JOIN ";
104    public static final String FULL_JOIN = " FULL JOIN ";
105    public static final String RIGHT_JOIN = " RIGHT JOIN ";
106    public static final String INNER_JOIN = " INNER JOIN ";
107    public static final String CROSS_JOIN = " CROSS JOIN ";
108
109
110    // === 逻辑符号 ===
111
112    public static final String GT = " > ";
113    public static final String GE = " >= ";
114    public static final String LT = " < ";
115    public static final String LE = " <= ";
116    public static final String LIKE = " LIKE ";
117    public static final String NOT_LIKE = " NOT LIKE ";
118    public static final String EQUALS = " = ";
119    public static final String NOT_EQUALS = " != ";
120    public static final String IS_NULL = " IS NULL ";
121    public static final String IS_NOT_NULL = " IS NOT NULL ";
122    public static final String IN = " IN ";
123    public static final String NOT_IN = " NOT IN ";
124    public static final String BETWEEN = " BETWEEN ";
125    public static final String NOT_BETWEEN = " NOT BETWEEN ";
126
127
128    // === 排序相关关键字 ===
129
130    public static final String ASC = " ASC";
131    public static final String DESC = " DESC";
132    public static final String NULLS_FIRST = " NULLS FIRST";
133    public static final String NULLS_LAST = " NULLS LAST";
134
135
136    // === 数学运算符 ===
137
138    public static final String PLUS_SIGN = " + ";
139    public static final String MINUS_SIGN = " - ";
140    public static final String DIVISION_SIGN = " / ";
141    public static final String MULTIPLICATION_SIGN = " * ";
142
143    // === 其他拼接需要的字符串 ===
144
145    public static final String EQUALS_PLACEHOLDER = " = ? ";
146    public static final String AND_PLACEHOLDER = BLANK + PLACEHOLDER + AND + PLACEHOLDER + BLANK;
147
148}