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 List<Join> getJoins(QueryWrapper queryWrapper) { 067 return queryWrapper.getJoins(); 068 } 069 070 public static void setJoins(QueryWrapper queryWrapper, List<Join> joins) { 071 queryWrapper.setJoins(joins); 072 } 073 074 075 public static List<QueryTable> getJoinTables(QueryWrapper queryWrapper) { 076 return queryWrapper.getJoinTables(); 077 } 078 079 public static void setJoinTables(QueryWrapper queryWrapper, List<QueryTable> joinTables) { 080 queryWrapper.setJoinTables(joinTables); 081 } 082 083 084 public static QueryCondition getWhereQueryCondition(QueryWrapper queryWrapper) { 085 return queryWrapper.getWhereQueryCondition(); 086 } 087 088 public static List<QueryColumn> getGroupByColumns(QueryWrapper queryWrapper) { 089 return queryWrapper.getGroupByColumns(); 090 } 091 092 public static void setGroupByColumns(QueryWrapper queryWrapper, List<QueryColumn> groupByColumns) { 093 queryWrapper.setGroupByColumns(groupByColumns); 094 } 095 096 public static QueryCondition getHavingQueryCondition(QueryWrapper queryWrapper) { 097 return queryWrapper.getHavingQueryCondition(); 098 } 099 100 public static void setHavingQueryCondition(QueryWrapper queryWrapper, QueryCondition havingQueryCondition) { 101 queryWrapper.setHavingQueryCondition(havingQueryCondition); 102 } 103 104 public static List<QueryOrderBy> getOrderBys(QueryWrapper queryWrapper) { 105 return queryWrapper.getOrderBys(); 106 } 107 108 public static void setOrderBys(QueryWrapper queryWrapper, List<QueryOrderBy> orderBys) { 109 queryWrapper.setOrderBys(orderBys); 110 } 111 112 public static List<UnionWrapper> getUnions(QueryWrapper queryWrapper) { 113 return queryWrapper.getUnions(); 114 } 115 116 public static void setUnions(QueryWrapper queryWrapper, List<UnionWrapper> unions) { 117 queryWrapper.setUnions(unions); 118 } 119 120 121 public static Integer getLimitOffset(QueryWrapper queryWrapper) { 122 return queryWrapper.getLimitOffset(); 123 } 124 125 public static void setLimitOffset(QueryWrapper queryWrapper, Integer limitOffset) { 126 queryWrapper.setLimitOffset(limitOffset); 127 } 128 129 public static Integer getLimitRows(QueryWrapper queryWrapper) { 130 return queryWrapper.getLimitRows(); 131 } 132 133 public static void setLimitRows(QueryWrapper queryWrapper, Integer limitRows) { 134 queryWrapper.setLimitRows(limitRows); 135 } 136 137 public static Map<String, Object> getContext(QueryWrapper queryWrapper) { 138 return queryWrapper.getContext(); 139 } 140 141 public static void setContext(QueryWrapper queryWrapper, Map<String, Object> context) { 142 queryWrapper.setContext(context); 143 } 144 145 public static void putContext(QueryWrapper queryWrapper, String key, Object value) { 146 queryWrapper.putContext(key, value); 147 } 148 149 150 public static <R> R getContext(QueryWrapper queryWrapper, String key) { 151 return queryWrapper.getContext(key); 152 } 153 154 155 public static String toConditionSql(QueryColumn queryColumn, List<QueryTable> queryTables, IDialect dialect) { 156 return queryColumn.toConditionSql(queryTables, dialect); 157 } 158 159 public static String toSelectSql(QueryColumn queryColumn, List<QueryTable> queryTables, IDialect dialect) { 160 return queryColumn.toSelectSql(queryTables, dialect); 161 } 162 163 public static void setFromIfNecessary(QueryWrapper queryWrapper, String tableName) { 164 if (StringUtil.isNotBlank(tableName) 165 && CollectionUtil.isEmpty(queryWrapper.getQueryTables())) { 166 queryWrapper.from(tableName); 167 } 168 } 169}