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 */ 016package com.mybatisflex.core.query; 017 018import com.mybatisflex.core.util.LambdaGetter; 019import com.mybatisflex.core.util.LambdaUtil; 020 021public class QueryMethods { 022 023 public static FunctionQueryColumn count() { 024 return new FunctionQueryColumn("COUNT", new StringQueryColumn("*")); 025 } 026 027 public static FunctionQueryColumn count(String column) { 028 return new FunctionQueryColumn("COUNT", column); 029 } 030 031 public static FunctionQueryColumn count(QueryColumn column) { 032 return new FunctionQueryColumn("COUNT", column); 033 } 034 035 public static FunctionQueryColumn max(String column) { 036 return new FunctionQueryColumn("MAX", column); 037 } 038 039 public static FunctionQueryColumn max(QueryColumn column) { 040 return new FunctionQueryColumn("MAX", column); 041 } 042 043 public static FunctionQueryColumn min(String column) { 044 return new FunctionQueryColumn("MIN", column); 045 } 046 047 public static FunctionQueryColumn min(QueryColumn column) { 048 return new FunctionQueryColumn("MIN", column); 049 } 050 051 public static FunctionQueryColumn avg(String column) { 052 return new FunctionQueryColumn("AVG", column); 053 } 054 055 public static FunctionQueryColumn avg(QueryColumn column) { 056 return new FunctionQueryColumn("AVG", column); 057 } 058 059 public static FunctionQueryColumn sum(String column) { 060 return new FunctionQueryColumn("SUM", column); 061 } 062 063 public static FunctionQueryColumn sum(QueryColumn column) { 064 return new FunctionQueryColumn("SUM", column); 065 } 066 067 public static DistinctQueryColumn distinct(QueryColumn... columns) { 068 return new DistinctQueryColumn(columns); 069 } 070 071 public static CaseQueryColumn.Builder case_() { 072 return new CaseQueryColumn.Builder(); 073 } 074 075 public static CaseSearchQueryColumn.Builder case_(QueryColumn queryColumn) { 076 return new CaseSearchQueryColumn.Builder(queryColumn); 077 } 078 079 //CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 080 public static StringFunctionQueryColumn convert(String... params) { 081 return new StringFunctionQueryColumn("CONVERT", params); 082 } 083 084 public static StringQueryColumn column(String column) { 085 return new StringQueryColumn(column); 086 } 087 088 public static QueryColumn column(String table, String column) { 089 return new QueryColumn(null, table, column); 090 } 091 092 public static QueryColumn column(String schema, String table, String column) { 093 return new QueryColumn(schema, table, column); 094 } 095 096 public static <T> QueryColumn column(LambdaGetter<T> fn) { 097 return LambdaUtil.getQueryColumn(fn); 098 } 099 100 public static SelectQueryColumn column(QueryWrapper queryWrapper) { 101 return new SelectQueryColumn(queryWrapper); 102 } 103 104 public static QueryCondition exists(QueryWrapper queryWrapper) { 105 return new OperatorSelectCondition(" EXISTS ", queryWrapper); 106 } 107 108 public static QueryCondition notExists(QueryWrapper queryWrapper) { 109 return new OperatorSelectCondition(" NOT EXISTS ", queryWrapper); 110 } 111 112 public static QueryCondition not(QueryCondition childCondition) { 113 return new OperatorQueryCondition(" NOT ", childCondition); 114 } 115 116 public static QueryCondition noCondition() { 117 return QueryCondition.createEmpty(); 118 } 119 120 private static QueryWrapper newWrapper() { 121 return new QueryWrapper(); 122 } 123 124 125 public static QueryWrapper select(QueryColumn... queryColumns) { 126 return newWrapper().select(queryColumns); 127 } 128 129 public static QueryWrapper selectOne() { 130 return select(column("1")); 131 } 132 133 public static QueryWrapper selectCount() { 134 return select(count()); 135 } 136 137 public static QueryWrapper selectCountOne() { 138 return select(count("1")); 139 } 140 141 public static RawFragment raw(String raw) { 142 return new RawFragment(raw); 143 } 144 145 public static RawFragment raw(String raw, Object... params) { 146 return new RawFragment(raw, params); 147 } 148 149}