
com.mybatisflex.core.query.CPI Maven / Gradle / Ivy
/*
* Copyright (c) 2022-2025, Mybatis-Flex ([email protected]).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mybatisflex.core.query;
import com.mybatisflex.core.constant.SqlConnector;
import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.util.CollectionUtil;
import com.mybatisflex.core.util.StringUtil;
import java.util.List;
import java.util.Map;
/**
* Cross Package Invoke
* 跨包调用工具类,这么设计的原因,是需要保证 QueryWrapper 方法对于用户的纯净性
* 而 framework 又可以通过 CPI 来调用 QueryWrapper 的其他方法
*/
public class CPI {
private CPI() {
}
public static Object[] getValueArray(QueryWrapper queryWrapper) {
return queryWrapper.getAllValueArray();
}
public static Object[] getJoinValueArray(QueryWrapper queryWrapper) {
return queryWrapper.getJoinValueArray();
}
public static Object[] getConditionValueArray(QueryWrapper queryWrapper) {
return queryWrapper.getConditionValueArray();
}
public static Object[] getConditionParams(QueryCondition queryCondition) {
return WrapperUtil.getValues(queryCondition);
}
public static List getChildSelect(QueryWrapper queryWrapper) {
return queryWrapper.getChildSelect();
}
public static With getWith(QueryWrapper queryWrapper) {
return queryWrapper.with;
}
public static List getQueryTables(QueryWrapper queryWrapper) {
return queryWrapper.getQueryTables();
}
public static void setQueryTable(QueryWrapper queryWrapper, List queryTables) {
queryWrapper.setQueryTables(queryTables);
}
public static String getDataSource(QueryWrapper queryWrapper) {
return queryWrapper.getDataSource();
}
public static void setDataSource(QueryWrapper queryWrapper, String datasource) {
queryWrapper.setDataSource(datasource);
}
public static String getHint(QueryWrapper queryWrapper) {
return queryWrapper.getHint();
}
public static void setHint(QueryWrapper queryWrapper, String hint) {
queryWrapper.setHint(hint);
}
public static List getSelectColumns(QueryWrapper queryWrapper) {
return queryWrapper.getSelectColumns();
}
public static void setSelectColumns(QueryWrapper queryWrapper, List selectColumns) {
queryWrapper.setSelectColumns(selectColumns);
}
public static void setSelectColumnsIfNecessary(QueryWrapper queryWrapper, List selectColumns) {
if (CollectionUtil.isEmpty(queryWrapper.getSelectColumns())
&& CollectionUtil.isNotEmpty(selectColumns)
&& CollectionUtil.isEmpty(CPI.getJoinTables(queryWrapper))
) {
queryWrapper.setSelectColumns(selectColumns);
}
}
public static List getJoins(QueryWrapper queryWrapper) {
return queryWrapper.getJoins();
}
public static void setJoins(QueryWrapper queryWrapper, List joins) {
queryWrapper.setJoins(joins);
}
public static String getJoinType(Join join) {
return join.type;
}
public static QueryTable getJoinQueryTable(Join join) {
return join.getQueryTable();
}
public static QueryCondition getJoinQueryCondition(Join join) {
return join.on;
}
public static void setJoinQueryCondition(Join join, QueryCondition queryCondition) {
join.on = queryCondition;
}
public static List getJoinTables(QueryWrapper queryWrapper) {
return queryWrapper.getJoinTables();
}
public static void setJoinTables(QueryWrapper queryWrapper, List joinTables) {
queryWrapper.setJoinTables(joinTables);
}
public static void addJoin(QueryWrapper queryWrapper, Join join) {
queryWrapper.addJoinTable(join.getQueryTable());
queryWrapper.addJoin(join);
}
public static QueryCondition getPrevEffectiveCondition(QueryCondition queryCondition) {
return queryCondition.getPrevEffectiveCondition();
}
public static QueryCondition getNextCondition(QueryCondition queryCondition) {
return queryCondition.getNextEffectiveCondition();
}
public static QueryCondition getWhereQueryCondition(QueryWrapper queryWrapper) {
return queryWrapper.getWhereQueryCondition();
}
public static void setWhereQueryCondition(QueryWrapper queryWrapper, QueryCondition queryCondition) {
queryWrapper.setWhereQueryCondition(queryCondition);
}
public static void addWhereQueryCondition(QueryWrapper queryWrapper, QueryCondition queryCondition) {
queryWrapper.addWhereQueryCondition(queryCondition);
}
public static void addWhereQueryCondition(QueryWrapper queryWrapper, QueryCondition queryCondition, SqlConnector connector) {
queryWrapper.addWhereQueryCondition(queryCondition, connector);
}
public static List getGroupByColumns(QueryWrapper queryWrapper) {
return queryWrapper.getGroupByColumns();
}
public static void setGroupByColumns(QueryWrapper queryWrapper, List groupByColumns) {
queryWrapper.setGroupByColumns(groupByColumns);
}
public static QueryCondition getHavingQueryCondition(QueryWrapper queryWrapper) {
return queryWrapper.getHavingQueryCondition();
}
public static void setHavingQueryCondition(QueryWrapper queryWrapper, QueryCondition havingQueryCondition) {
queryWrapper.setHavingQueryCondition(havingQueryCondition);
}
public static List getOrderBys(QueryWrapper queryWrapper) {
return queryWrapper.getOrderBys();
}
public static void setOrderBys(QueryWrapper queryWrapper, List orderBys) {
queryWrapper.setOrderBys(orderBys);
}
public static List getUnions(QueryWrapper queryWrapper) {
return queryWrapper.getUnions();
}
public static void setUnions(QueryWrapper queryWrapper, List unions) {
queryWrapper.setUnions(unions);
}
public static Long getLimitOffset(QueryWrapper queryWrapper) {
return queryWrapper.getLimitOffset();
}
public static void setLimitOffset(QueryWrapper queryWrapper, Long limitOffset) {
queryWrapper.setLimitOffset(limitOffset);
}
public static Long getLimitRows(QueryWrapper queryWrapper) {
return queryWrapper.getLimitRows();
}
public static void setLimitRows(QueryWrapper queryWrapper, Long limitRows) {
queryWrapper.setLimitRows(limitRows);
}
public static List getEndFragments(QueryWrapper queryWrapper) {
return queryWrapper.getEndFragments();
}
public static void setEndFragments(QueryWrapper queryWrapper, List endFragments) {
queryWrapper.setEndFragments(endFragments);
}
public static Map getContext(QueryWrapper queryWrapper) {
return queryWrapper.getContext();
}
public static void setContext(QueryWrapper queryWrapper, Map context) {
queryWrapper.setContext(context);
}
public static void putContext(QueryWrapper queryWrapper, String key, Object value) {
queryWrapper.putContext(key, value);
}
public static R getContext(QueryWrapper queryWrapper, String key) {
return queryWrapper.getContext(key);
}
public static String toConditionSql(QueryColumn queryColumn, List queryTables, IDialect dialect) {
return queryColumn.toConditionSql(queryTables, dialect);
}
public static String toSelectSql(QueryColumn queryColumn, List queryTables, IDialect dialect) {
return queryColumn.toSelectSql(queryTables, dialect);
}
public static void setFromIfNecessary(QueryWrapper queryWrapper, String tableName) {
if (StringUtil.hasText(tableName)
&& CollectionUtil.isEmpty(queryWrapper.getQueryTables())) {
queryWrapper.from(tableName);
}
}
public static void setFromIfNecessary(QueryWrapper queryWrapper, String schema, String tableName) {
if (StringUtil.hasText(tableName)
&& CollectionUtil.isEmpty(queryWrapper.getQueryTables())) {
queryWrapper.from(new QueryTable(schema, tableName));
}
}
public static boolean containsTable(QueryCondition condition, String... tables) {
return condition != null && condition.containsTable(tables);
}
public static QueryWrapper getQueryWrapper(SelectQueryColumn selectQueryColumn) {
return selectQueryColumn.getQueryWrapper();
}
public static boolean isSameTable(QueryTable queryTable, QueryTable otherTable) {
return queryTable.isSameTable(otherTable);
}
}