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.dialect.IDialect; 019import com.mybatisflex.core.util.CollectionUtil; 020import com.mybatisflex.core.util.StringUtil; 021 022import java.util.List; 023import java.util.Map; 024 025/** 026 * Cross Package Invoke 027 * 夸包调用工具类,这么设计的原因,是需要保证 QueryWrapper 方法对于用户的纯净性 028 * 而 framework 又可以通过 CPI 来调用 QueryWrapper 的其他方法 029 */ 030 031public class CPI { 032 033 034 public static Object[] getValueArray(QueryWrapper queryWrapper) { 035 return queryWrapper.getValueArray(); 036 } 037 038 public static List<QueryWrapper> getChildSelect(QueryWrapper queryWrapper) { 039 return queryWrapper.getChildSelect(); 040 } 041 042 public static List<QueryTable> getQueryTables(QueryWrapper queryWrapper) { 043 return queryWrapper.getQueryTables(); 044 } 045 046 public static void setQueryTable(QueryWrapper queryWrapper, List<QueryTable> queryTables) { 047 queryWrapper.setQueryTables(queryTables); 048 } 049 050 public static String getDatasource(QueryWrapper queryWrapper) { 051 return queryWrapper.getDatasource(); 052 } 053 054 public static void setDatasource(QueryWrapper queryWrapper, String datasource) { 055 queryWrapper.setDatasource(datasource); 056 } 057 058 public static List<QueryColumn> getSelectColumns(QueryWrapper queryWrapper) { 059 return queryWrapper.getSelectColumns(); 060 } 061 062 public static void setSelectColumns(QueryWrapper queryWrapper, List<QueryColumn> selectColumns) { 063 queryWrapper.setSelectColumns(selectColumns); 064 } 065 066 public static void setSelectColumnsIfNecessary(QueryWrapper queryWrapper, List<QueryColumn> selectColumns) { 067 if (CollectionUtil.isEmpty(queryWrapper.getSelectColumns()) 068 && CollectionUtil.isNotEmpty(selectColumns)) { 069 queryWrapper.setSelectColumns(selectColumns); 070 } 071 } 072 073 public static List<Join> getJoins(QueryWrapper queryWrapper) { 074 return queryWrapper.getJoins(); 075 } 076 077 public static void setJoins(QueryWrapper queryWrapper, List<Join> joins) { 078 queryWrapper.setJoins(joins); 079 } 080 081 082 public static List<QueryTable> getJoinTables(QueryWrapper queryWrapper) { 083 return queryWrapper.getJoinTables(); 084 } 085 086 public static void setJoinTables(QueryWrapper queryWrapper, List<QueryTable> joinTables) { 087 queryWrapper.setJoinTables(joinTables); 088 } 089 090 091 public static QueryCondition getWhereQueryCondition(QueryWrapper queryWrapper) { 092 return queryWrapper.getWhereQueryCondition(); 093 } 094 095 public static List<QueryColumn> getGroupByColumns(QueryWrapper queryWrapper) { 096 return queryWrapper.getGroupByColumns(); 097 } 098 099 public static void setGroupByColumns(QueryWrapper queryWrapper, List<QueryColumn> groupByColumns) { 100 queryWrapper.setGroupByColumns(groupByColumns); 101 } 102 103 public static QueryCondition getHavingQueryCondition(QueryWrapper queryWrapper) { 104 return queryWrapper.getHavingQueryCondition(); 105 } 106 107 public static void setHavingQueryCondition(QueryWrapper queryWrapper, QueryCondition havingQueryCondition) { 108 queryWrapper.setHavingQueryCondition(havingQueryCondition); 109 } 110 111 public static List<QueryOrderBy> getOrderBys(QueryWrapper queryWrapper) { 112 return queryWrapper.getOrderBys(); 113 } 114 115 public static void setOrderBys(QueryWrapper queryWrapper, List<QueryOrderBy> orderBys) { 116 queryWrapper.setOrderBys(orderBys); 117 } 118 119 public static List<UnionWrapper> getUnions(QueryWrapper queryWrapper) { 120 return queryWrapper.getUnions(); 121 } 122 123 public static void setUnions(QueryWrapper queryWrapper, List<UnionWrapper> unions) { 124 queryWrapper.setUnions(unions); 125 } 126 127 128 public static Integer getLimitOffset(QueryWrapper queryWrapper) { 129 return queryWrapper.getLimitOffset(); 130 } 131 132 public static void setLimitOffset(QueryWrapper queryWrapper, Integer limitOffset) { 133 queryWrapper.setLimitOffset(limitOffset); 134 } 135 136 public static Integer getLimitRows(QueryWrapper queryWrapper) { 137 return queryWrapper.getLimitRows(); 138 } 139 140 public static void setLimitRows(QueryWrapper queryWrapper, Integer limitRows) { 141 queryWrapper.setLimitRows(limitRows); 142 } 143 144 public static Map<String, Object> getContext(QueryWrapper queryWrapper) { 145 return queryWrapper.getContext(); 146 } 147 148 public static void setContext(QueryWrapper queryWrapper, Map<String, Object> context) { 149 queryWrapper.setContext(context); 150 } 151 152 public static void putContext(QueryWrapper queryWrapper, String key, Object value) { 153 queryWrapper.putContext(key, value); 154 } 155 156 157 public static <R> R getContext(QueryWrapper queryWrapper, String key) { 158 return queryWrapper.getContext(key); 159 } 160 161 162 public static String toConditionSql(QueryColumn queryColumn, List<QueryTable> queryTables, IDialect dialect) { 163 return queryColumn.toConditionSql(queryTables, dialect); 164 } 165 166 public static String toSelectSql(QueryColumn queryColumn, List<QueryTable> queryTables, IDialect dialect) { 167 return queryColumn.toSelectSql(queryTables, dialect); 168 } 169 170 public static void setFromIfNecessary(QueryWrapper queryWrapper, String tableName) { 171 if (StringUtil.isNotBlank(tableName) 172 && CollectionUtil.isEmpty(queryWrapper.getQueryTables())) { 173 queryWrapper.from(tableName); 174 } 175 } 176}