diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java index ced8cd511..d76b175e6 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerby.java @@ -73,6 +73,26 @@ public class ConfigInfoAggrMapperByDerby implements ConfigInfoAggrMapper { @Override public String aggrConfigInfoCount(List datumIds, boolean isIn) { + StringBuilder sql = new StringBuilder( + " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id"); + if (isIn) { + sql.append(" IN ("); + } else { + sql.append(" NOT IN ("); + } + for (int i = 0, size = datumIds.size(); i < size; i++) { + if (i > 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(')'); + + return sql.toString(); + } + + @Override + public String aggrConfigInfoCount() { return " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java index 893291e9b..775782827 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerby.java @@ -22,7 +22,6 @@ import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -34,17 +33,17 @@ import java.util.Map; public class ConfigInfoMapperByDerby implements ConfigInfoMapper { - private static final String DATA_ID = "dataId"; + private static final String DATA_ID = "data_id"; - private static final String GROUP = "group"; + private static final String GROUP = "group_id"; - private static final String APP_NAME = "appName"; + private static final String APP_NAME = "app_name"; private static final String CONTENT = "content"; @Override public String updateMd5() { - return "UPDATE config_info SET md5 = ? WHERE data_id=? AND group_id=? AND tenant_id=? AND gmt_modified=?"; + return "UPDATE config_info SET md5 = ? WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND gmt_modified = ?"; } @Override @@ -59,34 +58,35 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { @Override public String findConfigInfoApp() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=? AND app_name=?"; + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? " + + "AND group_id = ? AND tenant_id = ? AND app_name = ?"; } @Override public String findConfigInfoBase() { - return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override - public String findConfigInfo() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id=?"; + public String findConfigInfoById() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id = ?"; } @Override public String findConfigInfoByDataIdFetchRows() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND " - + "tenant_id=?"; + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? AND " + + "tenant_id = ?"; } @Override public String findConfigInfoByDataIdAndAppCountRows() { - return "SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? AND app_name=?"; + return "SELECT count(*) FROM config_info WHERE data_id = ? AND tenant_id = ? AND app_name = ?"; } @Override public String findConfigInfoByDataIdAndAppFetchRows() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND " - + "tenant_id=? AND app_name=?"; + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? AND " + + "tenant_id = ? AND app_name = ?"; } @Override @@ -96,18 +96,18 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { @Override public String findConfigInfoByAppCountRows() { - return "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name=?"; + return "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"; } @Override public String findConfigInfoByAppFetchRows() { return "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND " - + "app_name=?"; + + "app_name = ?"; } @Override public String configInfoLikeTenantCount() { - return null; + return "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"; } @Override @@ -122,7 +122,7 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { @Override public String findAllConfigKey() { - return " SELECT data_id,group_id,app_name FROM " + return " SELECT data_id,group_id,app_name FROM " + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?, ? ) " + "g, config_info t WHERE g.id = t.id "; } @@ -143,56 +143,58 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { @Override public String findAllConfigInfoFragment() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type FROM config_info WHERE id > ? " + return "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type FROM config_info WHERE id > ? " + "ORDER BY id ASC LIMIT ?,?"; } @Override public String findChangeConfig() { return "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified FROM config_info WHERE " - + "gmt_modified >=? AND gmt_modified <= ?"; + + "gmt_modified > = ? AND gmt_modified <= ?"; } @Override - public String findChangeConfigCountRows(Map params, final Timestamp startTime, final Timestamp endTime) { + public String findChangeConfigCountRows(Map params, final Timestamp startTime, + final Timestamp endTime) { return "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified FROM config_info WHERE " - + "gmt_modified >=? AND gmt_modified <= ?"; + + "gmt_modified > = ? AND gmt_modified <= ?"; } @Override - public String findChangeConfigFetchRows(Map params, final Timestamp startTime, final Timestamp endTime) { + public String findChangeConfigFetchRows(Map params, final Timestamp startTime, + final Timestamp endTime) { return "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified FROM config_info WHERE " - + "gmt_modified >=? AND gmt_modified <= ?"; + + "gmt_modified > = ? AND gmt_modified <= ?"; } @Override public String addConfigInfoAtomic() { - return "INSERT INTO config_info(id, data_id, group_id, tenant_id, app_name, content, md5, src_ip, src_user, gmt_create," + return "INSERT INTO config_info(id, data_id, group_id, tenant_id, app_name, content, md5, src_ip, src_user, gmt_create," + "gmt_modified, c_desc, c_use, effect, type, c_schema,encrypted_data_key) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; } @Override public String removeConfigInfoAtomic() { - return "DELETE FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + return "DELETE FROM config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override public String updateConfigInfoAtomic() { - return "UPDATE config_info SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=?," - + "c_desc=?,c_use=?,effect=?,type=?,c_schema=?,encrypted_data_key=? WHERE data_id=? AND group_id=? AND tenant_id=?"; + return "UPDATE config_info SET content = ?, md5 = ?, src_ip = ?,src_user = ?,gmt_modified = ?,app_name = ?," + + "c_desc = ?,c_use = ?,effect = ?,type = ?,c_schema = ?,encrypted_data_key = ? WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override public String findConfigAdvanceInfo() { return "SELECT gmt_create,gmt_modified,src_user,src_ip,c_desc,c_use,effect,type,c_schema FROM config_info " - + "WHERE data_id=? AND group_id=? AND tenant_id=?"; + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override public String findConfigAllInfo() { return "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_create," + "gmt_modified,src_user,src_ip,c_desc,c_use,effect,type,c_schema,encrypted_data_key FROM config_info " - + "WHERE data_id=? AND group_id=? AND tenant_id=?"; + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override @@ -204,12 +206,12 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { @Override public String queryConfigInfo() { return "SELECT id,data_id,group_id,tenant_id,app_name,content,type,gmt_modified,md5 " - + "FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + + "FROM config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override public String queryConfigInfoByNamespace() { - return "SELECT data_id,group_id,tenant_id,app_name,type FROM config_info WHERE tenant_id=?"; + return "SELECT data_id,group_id,tenant_id,app_name,type FROM config_info WHERE tenant_id = ?"; } @Override @@ -217,7 +219,6 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user," + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); - List paramList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ids)) { where.append(" id IN ("); for (int i = 0; i < ids.size(); i++) { @@ -225,27 +226,38 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { where.append(", "); } where.append('?'); - paramList.add(ids.get(i)); } where.append(") "); } else { - where.append(" tenant_id=? "); + where.append(" tenant_id = ? "); if (!StringUtils.isEmpty(params.get(DATA_ID))) { where.append(" AND data_id LIKE ? "); } if (StringUtils.isNotEmpty(params.get(GROUP))) { - where.append(" AND group_id=? "); + where.append(" AND group_id = ? "); } if (StringUtils.isNotEmpty(params.get(APP_NAME))) { - where.append(" AND app_name=? "); + where.append(" AND app_name = ? "); } } return sql + where; } @Override - public String findConfigInfoByBatch(List dataIds, int subQueryLimit) { - return null; + public String findConfigInfoByBatch(int paramSize) { + String sqlStart = "SELECT data_id, group_id, tenant_id, app_name, content FROM config_info" + + " WHERE group_id = ? AND tenant_id = ? AND data_id IN ("; + String sqlEnd = ")"; + StringBuilder subQuerySql = new StringBuilder(); + + for (int i = 0; i < paramSize; i++) { + subQuerySql.append('?'); + if (i != paramSize - 1) { + subQuerySql.append(','); + } + } + + return sqlStart + subQuerySql.toString() + sqlEnd; } @Override @@ -320,6 +332,261 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { return sqlFetchRows + where; } + @Override + public String findConfigInfoByDataIdCountRows() { + return "SELECT count(*) FROM config_info WHERE data_id = ? AND tenant_id = ?"; + } + + @Override + public String findConfigInfoByDataIdAndAdvanceCountRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + + return sql.toString(); + } + + @Override + public String findConfigInfo4PageCountRows(Map params) { + final String appName = params.get(APP_NAME); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String sqlCount = "SELECT count(*) FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id=? "); + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND app_name=? "); + } + return sqlCount + where; + } + + @Override + public String findConfigInfo4PageFetchRows(Map params) { + final String appName = params.get(APP_NAME); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id=? "); + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND app_name=? "); + } + return sql + where; + } + + @Override + public String findConfigInfoBaseByDataIdCountRows() { + return "SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoBaseByDataIdFetchRows() { + return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupFetchRows() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " + + "tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupAndAppCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?"; + } + + @Override + public String findConfigInfoByGroupAndAppFetchRows() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " + + "tenant_id=? AND app_name =?"; + } + + @Override + public String findConfigInfoByAdvanceCountRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByAdvanceFetchRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info where tenant_id LIKE ? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoBaseByGroupCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoBaseByGroupFetchRows() { + return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoLike4PageCountRows(Map params) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get("dataId"); + final String group = params.get("groupId"); + final String sqlCountRows = "SELECT count(*) FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND content LIKE ? "); + } + return sqlCountRows + where; + } + + @Override + public String findConfigInfoLike4PageFetchRows(Map params) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND content LIKE ? "); + } + return sqlFetchRows + where; + } + + @Override + public String findAllConfigInfoFetchRows() { + return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" + + " g, config_info t WHERE g.id = t.id "; + } + + @Override + public String findConfigInfoAdvanceInfo(Map params) { + final String appName = params.get("appName"); + + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + + return sql.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceCountRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceFetchRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfosByIds(int idSize) { + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE "); + sql.append("id IN ("); + for (int i = 0; i < idSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + return sql.toString(); + } + + @Override + public String findConfigInfoByDataId2Group2Tenant() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id=?"; + } + + @Override + public String removeConfigInfoByIdsAtomic(int size) { + StringBuilder sql = new StringBuilder("DELETE FROM config_info WHERE "); + sql.append("id IN ("); + for (int i = 0; i < size; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + return sql.toString(); + } + @Override public String getTableName() { return TableConstant.CONFIG_INFO; diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java new file mode 100644 index 000000000..8b8fd0fe7 --- /dev/null +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerby.java @@ -0,0 +1,331 @@ +/* + * Copyright 1999-2022 Alibaba Group Holding Ltd. + * + * 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.alibaba.nacos.plugin.datasource.impl.derby; + +import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; + +import java.util.Map; + +/** + * The derby implementation of ConfigTagsRelationMapper. + * + * @author hyx + **/ + +public class ConfigInfoTagsRelationMapperByDerby implements ConfigTagsRelationMapper { + + @Override + public String findConfigInfoAdvanceInfo(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.group_id=? AND a.tenant_id=? "); + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceCountRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id=? "); + + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id=? "); + + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfo4PageCountRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id"; + + where.append(" a.tenant_id=? "); + + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND a.data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND a.group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND a.app_name=? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlCount + where; + } + + @Override + public String findConfigInfo4PageFetchRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sql = "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id"; + + where.append(" a.tenant_id=? "); + + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND a.data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND a.group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND a.app_name=? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sql + where; + } + + @Override + public String findConfigInfoByGroupAndAdvanceCountRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.group_id=? AND a.tenant_id=? "); + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.group_id=? AND a.tenant_id=? "); + + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoLike4PageCountRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlCountRows = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; + where.append(" a.tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND a.data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND a.group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND a.app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND a.content LIKE ? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlCountRows + where; + } + + @Override + public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlFetchRows = + "SELECT a.ID,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id "; + + where.append(" a.tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND a.data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND a.group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND a.app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND a.content LIKE ? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlFetchRows + where; + } + + @Override + public String addConfigTagRelationAtomic() { + return "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) " + + "VALUES(?,?,?,?,?,?)"; + } + + @Override + public String removeTagByIdAtomic() { + return "DELETE FROM config_tags_relation WHERE id=?"; + } + + @Override + public String getConfigTagsByTenant() { + return "SELECT tag_name FROM config_tags_relation WHERE tenant_id = ? "; + } + + @Override + public String selectTagByConfig() { + return "SELECT tag_name FROM config_tags_relation WHERE data_id=? AND group_id=? AND tenant_id = ? "; + } + + @Override + public String findConfigInfoByAdvanceCountRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); + + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); + + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } +} diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java index 3a306f2ab..3fb849803 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySql.java @@ -71,7 +71,27 @@ public class ConfigInfoAggrMapperByMySql implements ConfigInfoAggrMapper { @Override public String aggrConfigInfoCount(List datumIds, boolean isIn) { - return "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; + StringBuilder sql = new StringBuilder( + " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id"); + if (isIn) { + sql.append(" IN ("); + } else { + sql.append(" NOT IN ("); + } + for (int i = 0, size = datumIds.size(); i < size; i++) { + if (i > 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(')'); + + return sql.toString(); + } + + @Override + public String aggrConfigInfoCount() { + return " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; } @Override diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java index 62d969b2c..a2396d627 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySql.java @@ -71,13 +71,13 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { } @Override - public String findConfigInfo() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id= ?"; + public String findConfigInfoById() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id = ?"; } @Override public String findConfigInfoByDataIdFetchRows() { - return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id= ? AND tenant_id= ?"; + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? AND tenant_id = ?"; } @Override @@ -154,7 +154,8 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { } @Override - public String findChangeConfigCountRows(Map params, final Timestamp startTime, final Timestamp endTime) { + public String findChangeConfigCountRows(Map params, final Timestamp startTime, + final Timestamp endTime) { final String tenant = params.get(TENANT); final String dataId = params.get(DATA_ID); final String group = params.get(GROUP); @@ -168,11 +169,11 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; } - + if (!StringUtils.isBlank(tenantTmp)) { where += " AND tenant_id = ? "; } - + if (!StringUtils.isBlank(appName)) { where += " AND app_name = ? "; } @@ -186,7 +187,8 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { } @Override - public String findChangeConfigFetchRows(Map params, final Timestamp startTime, final Timestamp endTime) { + public String findChangeConfigFetchRows(Map params, final Timestamp startTime, + final Timestamp endTime) { final String tenant = params.get(TENANT); final String dataId = params.get(DATA_ID); final String group = params.get(GROUP); @@ -200,11 +202,11 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; } - + if (!StringUtils.isBlank(tenantTmp)) { where += " AND tenant_id = ? "; } - + if (!StringUtils.isBlank(appName)) { where += " AND app_name = ? "; } @@ -250,7 +252,7 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { @Override public String listGroupKeyMd5ByPageFetchRows() { - return " SELECT t.id,data_id,group_id,tenant_id,app_name,md5,type,gmt_modified,encrypted_data_key FROM " + return " SELECT t.id,data_id,group_id,tenant_id,app_name,md5,type,gmt_modified,encrypted_data_key FROM " + "( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) g, config_info t WHERE g.id = t.id"; } @@ -269,6 +271,9 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { public String findAllConfigInfo4Export(List ids, Map params) { String tenant = params.get("tenant"); String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; + String sql = + "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user,src_ip," + + "c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); List paramList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ids)) { @@ -294,26 +299,20 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { where.append(" AND app_name= ? "); } } - return null; + return sql + where; } @Override - public String findConfigInfoByBatch(List dataIds, int subQueryLimit) { + public String findConfigInfoByBatch(int paramSize) { String sqlStart = "SELECT data_id, group_id, tenant_id, app_name, content " + "FROM config_info WHERE group_id = ? AND tenant_id = ? AND data_id IN ("; String sqlEnd = ")"; StringBuilder subQuerySql = new StringBuilder(); - - for (int i = 0; i < dataIds.size(); i += subQueryLimit) { - // dataids - List params = new ArrayList<>( - dataIds.subList(i, i + subQueryLimit < dataIds.size() ? i + subQueryLimit : dataIds.size())); - for (int j = 0; j < params.size(); j++) { - subQuerySql.append('?'); - if (j != params.size() - 1) { - subQuerySql.append(','); - } + for (int i = 0; i < paramSize; i++) { + subQuerySql.append('?'); + if (i != paramSize - 1) { + subQuerySql.append(','); } } return sqlStart + subQuerySql.toString() + sqlEnd; @@ -336,7 +335,7 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { if (!StringUtils.isBlank(params.get(CONTENT))) { where += " AND content LIKE ? "; } - + return sqlCountRows + where; } @@ -357,7 +356,7 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { if (!StringUtils.isBlank(params.get(CONTENT))) { where += " AND content LIKE ? "; } - + return sqlFetchRows + where; } @@ -365,7 +364,7 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { public String findConfigInfoBaseLikeCountRows(Map params) { final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; String where = " 1=1 AND tenant_id='' "; - + if (!StringUtils.isBlank(params.get(DATA_ID))) { where += " AND data_id LIKE ? "; } @@ -394,6 +393,258 @@ public class ConfigInfoMapperByMySql implements ConfigInfoMapper { return sqlFetchRows + where; } + @Override + public String findConfigInfoByDataIdCountRows() { + return "SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByDataIdAndAdvanceCountRows(Map params) { + final String appName = params.get(APP_NAME); + StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params) { + final String appName = params.get(APP_NAME); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfo4PageCountRows(Map params) { + final String appName = params.get(APP_NAME); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String sqlCount = "SELECT count(*) FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id=? "); + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND app_name=? "); + } + return sqlCount + where; + } + + @Override + public String findConfigInfo4PageFetchRows(Map params) { + final String appName = params.get(APP_NAME); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id=? "); + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND app_name=? "); + } + return sql + where; + } + + @Override + public String findConfigInfoBaseByDataIdCountRows() { + return "SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoBaseByDataIdFetchRows() { + return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupFetchRows() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoByGroupAndAppCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?"; + } + + @Override + public String findConfigInfoByGroupAndAppFetchRows() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?"; + } + + @Override + public String findConfigInfoByAdvanceCountRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByAdvanceFetchRows(Map params) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoBaseByGroupCountRows() { + return "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoBaseByGroupFetchRows() { + return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?"; + } + + @Override + public String findConfigInfoLike4PageCountRows(Map params) { + String dataId = params.get(DATA_ID); + String group = params.get(GROUP); + final String appName = params.get(APP_NAME); + final String content = params.get(CONTENT); + final String sqlCountRows = "SELECT count(*) FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND content LIKE ? "); + } + return sqlCountRows + where; + } + + @Override + public String findConfigInfoLike4PageFetchRows(Map params) { + String dataId = params.get(DATA_ID); + String group = params.get(GROUP); + final String appName = params.get(APP_NAME); + final String content = params.get(CONTENT); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; + StringBuilder where = new StringBuilder(" WHERE "); + where.append(" tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND content LIKE ? "); + } + return sqlFetchRows + where; + } + + @Override + public String findAllConfigInfoFetchRows() { + return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" + + " g, config_info t WHERE g.id = t.id "; + } + + @Override + public String findConfigInfoAdvanceInfo(Map params) { + final String appName = params.get("appName"); + + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + + return sql.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceCountRows(Map params) { + final String appName = params.get(APP_NAME); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceFetchRows(Map params) { + final String appName = params.get(APP_NAME); + StringBuilder sql = new StringBuilder( + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfosByIds(int idSize) { + StringBuilder sql = new StringBuilder( + "SELECT ID,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE "); + sql.append("id IN ("); + for (int i = 0; i < idSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + return sql.toString(); + } + + @Override + public String findConfigInfoByDataId2Group2Tenant() { + return "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,type,encrypted_data_key" + + " FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + } + + @Override + public String removeConfigInfoByIdsAtomic(int size) { + StringBuilder sql = new StringBuilder("DELETE FROM config_info WHERE "); + sql.append("id IN ("); + for (int i = 0; i < size; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + return sql.toString(); + } + @Override public String getTableName() { return TableConstant.CONFIG_INFO; diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java new file mode 100644 index 000000000..c8b9a84a9 --- /dev/null +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySql.java @@ -0,0 +1,321 @@ +/* + * Copyright 1999-2022 Alibaba Group Holding Ltd. + * + * 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.alibaba.nacos.plugin.datasource.impl.mysql; + +import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; + +import java.util.Map; + +/** + * The mysql implementation of ConfigTagsRelationMapper. + * + * @author hyx + **/ + +public class ConfigTagsRelationMapperByMySql implements ConfigTagsRelationMapper { + + @Override + public String findConfigInfoAdvanceInfo(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.group_id=? AND a.tenant_id=? "); + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceCountRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id=? "); + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id=? "); + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfo4PageCountRows(final Map params, final int tagSize) { + final String appName = params.get("appName"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id"; + where.append(" a.tenant_id=? "); + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND a.data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND a.group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND a.app_name=? "); + } + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlCount; + } + + @Override + public String findConfigInfo4PageFetchRows(Map params, int tagSize) { + final String appName = params.get("appName"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sql = "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id"; + + where.append(" a.tenant_id=? "); + + if (StringUtils.isNotBlank(dataId)) { + where.append(" AND a.data_id=? "); + } + if (StringUtils.isNotBlank(group)) { + where.append(" AND a.group_id=? "); + } + if (StringUtils.isNotBlank(appName)) { + where.append(" AND a.app_name=? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sql + where; + } + + @Override + public String findConfigInfoByGroupAndAdvanceCountRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.group_id=? AND a.tenant_id=? "); + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.group_id=? AND a.tenant_id=? "); + + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } + + @Override + public String findConfigInfoLike4PageCountRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlCountRows = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; + + where.append(" a.tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND a.data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND a.group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND a.app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND a.content LIKE ? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlCountRows + where; + } + + @Override + public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize) { + final String appName = params.get("appName"); + final String content = params.get("content"); + final String dataId = params.get("dataId"); + final String group = params.get("group"); + StringBuilder where = new StringBuilder(" WHERE "); + final String sqlFetchRows = "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content " + + "FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; + + where.append(" a.tenant_id LIKE ? "); + if (!StringUtils.isBlank(dataId)) { + where.append(" AND a.data_id LIKE ? "); + } + if (!StringUtils.isBlank(group)) { + where.append(" AND a.group_id LIKE ? "); + } + if (!StringUtils.isBlank(appName)) { + where.append(" AND a.app_name = ? "); + } + if (!StringUtils.isBlank(content)) { + where.append(" AND a.content LIKE ? "); + } + + where.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + where.append(", "); + } + where.append('?'); + } + where.append(") "); + return sqlFetchRows + where; + } + + @Override + public String addConfigTagRelationAtomic() { + return "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) VALUES(?,?,?,?,?,?)"; + } + + @Override + public String removeTagByIdAtomic() { + return "DELETE FROM config_tags_relation WHERE id=?"; + } + + @Override + public String getConfigTagsByTenant() { + return "SELECT tag_name FROM config_tags_relation WHERE tenant_id = ? "; + } + + @Override + public String selectTagByConfig() { + return "SELECT tag_name FROM config_tags_relation WHERE data_id=? AND group_id=? AND tenant_id = ? "; + } + + @Override + public String findConfigInfoByAdvanceCountRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sqlCount = new StringBuilder( + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); + + sqlCount.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sqlCount.append(", "); + } + sqlCount.append('?'); + } + sqlCount.append(") "); + + if (StringUtils.isNotBlank(appName)) { + sqlCount.append(" AND a.app_name=? "); + } + return sqlCount.toString(); + } + + @Override + public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize) { + final String appName = params.get("appName"); + StringBuilder sql = new StringBuilder( + "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); + sql.append(" AND b.tag_name IN ("); + for (int i = 0; i < tagSize; i++) { + if (i != 0) { + sql.append(", "); + } + sql.append('?'); + } + sql.append(") "); + if (StringUtils.isNotBlank(appName)) { + sql.append(" AND a.app_name=? "); + } + return sql.toString(); + } +} diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java index 87daf535d..9167205c1 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoAggrMapper.java @@ -102,6 +102,15 @@ public interface ConfigInfoAggrMapper extends Mapper { */ String aggrConfigInfoCount(List datumIds, boolean isIn); + /** + * Get count of aggregation config info. + * The default sql: + * SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? + * + * @return The count of getting count of aggregation config info. + */ + String aggrConfigInfoCount(); + /** * Find a single piece of data before aggregation. * The default sql: diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoMapper.java index 601bed919..aeeaf746c 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoMapper.java @@ -80,7 +80,7 @@ public interface ConfigInfoMapper extends Mapper { * * @return The sql to select configInfo by ID. */ - String findConfigInfo(); + String findConfigInfoById(); /** * Query configuration information based on dataId. @@ -344,11 +344,10 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT data_id, group_id, tenant_id, app_name, content FROM config_info WHERE group_id = ? AND tenant_id = ? AND data_id IN (...) * - * @param dataIds data id list - * @param subQueryLimit sub query limit + * @param paramSize The size of ids. * @return The sql to get config information by batch. */ - String findConfigInfoByBatch(List dataIds, int subQueryLimit); + String findConfigInfoByBatch(int paramSize); /** * Get the count of config information. @@ -393,4 +392,234 @@ public interface ConfigInfoMapper extends Mapper { * @return The sql of getting the config information. */ String findConfigInfoBaseLikeFetchRows(Map params); + + /** + * To get number of config information by dataId and tenantId. + * The default sql: + * SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? + * + * @return The sql of query number. + */ + String findConfigInfoByDataIdCountRows(); + + /** + * find the count of data_id AND tenant_id. + * The default sql: + * SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? ... + * + * @param params The map of appName/ + * @return The sql of finding the count of data_id and tenant_id. + */ + String findConfigInfoByDataIdAndAdvanceCountRows(Map params); + + /** + * find config info. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? ... + * + * @param params The map of app name. + * @return The sql of finding config info. + */ + String findConfigInfoByDataIdAndAdvanceFetchRows(Map params); + + /** + * find the count of config info. + * The default sql: + * SELECT count(*) FROM config_info ... + * + * @param params The mpa of dataId, groupId and appName. + * @return The count of config info. + */ + String findConfigInfo4PageCountRows(Map params); + + /** + * find config info. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info ... + * + * @param params The mpa of dataId, groupId and appName. + * @return The sql of finding config info. + */ + String findConfigInfo4PageFetchRows(Map params); + + /** + * The count of querying configuration information based on dataId. + * The default sql: + * SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? + * + * @return The sql of query count. + */ + String findConfigInfoBaseByDataIdCountRows(); + + /** + * Query configuration information based on dataId. + * The default sql: + * SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=? + * + * @return The sql of query configuration information based on dataId. + */ + String findConfigInfoBaseByDataIdFetchRows(); + + /** + * Get the count of querying configuration information based on group. + * The default sql: + * SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? + * + * @return The count of config info by groupId and tenantId. + */ + String findConfigInfoByGroupCountRows(); + + /** + * Get the config info by groupId and tenantId. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? + * + * @return Get the config info by groupId and tenantId. + */ + String findConfigInfoByGroupFetchRows(); + + /** + * The count of querying configuration information based on group. + * The default sql: + * SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =? + * + * @return The sql of the count of querying configuration information based on group. + */ + String findConfigInfoByGroupAndAppCountRows(); + + /** + * Query configuration information based on group. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =? + * + * @return The sql of querying configuration information based on group. + */ + String findConfigInfoByGroupAndAppFetchRows(); + + /** + * Query configuration information count. + * The default sql: + * SELECT count(*) FROM config_info WHERE tenant_id LIKE ? ... + * + * @param params The map of appName. + * @return Query configuration information count. + */ + String findConfigInfoByAdvanceCountRows(Map params); + + /** + * Query configuration information. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? ... + * + * @param params The map of appName. + * @return Query configuration information. + */ + String findConfigInfoByAdvanceFetchRows(Map params); + + /** + * Query configuration information count based on group. + * The default sql: + * SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? + * + * @return Query configuration information count based on group. + */ + String findConfigInfoBaseByGroupCountRows(); + + /** + * Query configuration information based on group. + * The default sql: + * SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? + * + * @return Query configuration information based on group. + */ + String findConfigInfoBaseByGroupFetchRows(); + + /** + * Query config info count. + * The default sql: + * SELECT count(*) FROM config_info ... + * + * @param params The map of dataId, group, appName, content + * @return The sql of querying config info count + */ + String findConfigInfoLike4PageCountRows(Map params); + + /** + * Query config info. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info ... + * + * @param params The map of dataId, group, appName, content + * @return The sql of querying config info + */ + String findConfigInfoLike4PageFetchRows(Map params); + + /** + * Query all configuration information by page. + * The default sql: + * SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + * + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" + * + " g, config_info t WHERE g.id = t.id + * + * @return Query all configuration information by page. + */ + String findAllConfigInfoFetchRows(); + + /** + * Query configuration information based on dataId and group. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=? ... + * + * @param params The map of appName. + * @return The sql of querying configuration information based on dataId and group. + */ + String findConfigInfoAdvanceInfo(Map params); + + /** + * Query configuration information count. + * The default sql: + * SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? ... + * + * @param params The map of appName. + * @return The sql of querying configuration information count + */ + String findConfigInfoByGroupAndAdvanceCountRows(Map params); + + /** + * Query configuration information. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? ... + * + * @param params The map of appName. + * @return The sql of querying configuration information + */ + String findConfigInfoByGroupAndAdvanceFetchRows(Map params); + + /** + * find ConfigInfo by ids. + * The default sql: + * SELECT ID,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id IN (...) + * + * @param idSize the size of ids. + * @return find ConfigInfo by ids. + */ + String findConfigInfosByIds(int idSize); + + /** + * Query configuration information; database atomic operation, minimum SQL action, no business encapsulation. + * The default sql: + * SELECT id,data_id,group_id,tenant_id,app_name,content,md5,type,encrypted_data_key + * FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=? + * + * @return The sql of querying configuration information. + */ + String findConfigInfoByDataId2Group2Tenant(); + + /** + * Remove configuration; database atomic operation, minimum SQL action, no business encapsulation. + * + * @param size The size of ids. + * @return The sql of removing configuration. + */ + String removeConfigInfoByIdsAtomic(int size); } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigTagsRelationMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigTagsRelationMapper.java index c42540025..ba1daa29c 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigTagsRelationMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigTagsRelationMapper.java @@ -26,26 +26,17 @@ import java.util.Map; public interface ConfigTagsRelationMapper { - /** - * The default sql: - * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN - * config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.group_id=? AND a.tenant_id=? - * AND b.tag_name IN (...) ...; - * - * @param configAdvanceInfo advance info - * @return * Query configuration information based on dataId and group. - */ - String findConfigInfoAdvanceInfo(Map configAdvanceInfo); /** * Get the count of relations. * The default sql: * SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id=? ... * - * @param configAdvanceInfo advance info + * @param params The map of dataId and tenantId. + * @param tagSize the tags name size. * @return The sql of getting the count of relations. */ - String findConfigInfoByDataIdAndAdvanceCountRows(Map configAdvanceInfo); + String findConfigInfoByDataIdAndAdvanceCountRows(Map params, int tagSize); /** * Find config info. @@ -53,22 +44,23 @@ public interface ConfigTagsRelationMapper { * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN * config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.tenant_id AND b.tag_name IN (...) ... * - * @param configAdvanceInfo advance info + * @param params The map of appName. + * @param tagSize the tags name size. * @return The sql of finding config info. */ - String findConfigInfoByDataIdAndAdvanceFetchRows(Map configAdvanceInfo); + String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize); /** * Get the count of config info. * The default sql: * SELECT count(*) FROM config_info WHERE ... * - * @param configAdvanceInfo advance info * @param params The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, endTime, content), * the value is the key's value. + * @param tagSize the tags name size. * @return The sql of get config info. */ - String findConfigInfo4PageCountRows(final Map configAdvanceInfo, final Map params); + String findConfigInfo4PageCountRows(final Map params, int tagSize); /** * Find config info. @@ -76,21 +68,22 @@ public interface ConfigTagsRelationMapper { * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN * config_tags_relation b ON a.id=b.i ... * - * @param configAdvanceInfo advance info * @param params The keys and values are dataId and group. + * @param tagSize the tags name size. * @return The sql of finding config info. */ - String findConfigInfo4PageFetchRows(Map configAdvanceInfo, final Map params); + String findConfigInfo4PageFetchRows(final Map params, int tagSize); /** * Get the count of config information by group id and tenant id and tag name. * The default sql: * SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND b.tag_name IN (...) * - * @param configAdvanceInfo advance info + * @param params The keys and values are dataId and group. + * @param tagSize the tags name size. * @return The sql of querying configuration information. */ - String findConfigInfoByGroupAndAdvanceCountRows(Map configAdvanceInfo); + String findConfigInfoByGroupAndAdvanceCountRows(final Map params, int tagSize); /** * Query configuration information. @@ -98,21 +91,22 @@ public interface ConfigTagsRelationMapper { * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " * config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? AND b.tag_name IN (...) ... * - * @param configAdvanceInfo advance info + * @param params the keys and values are dataId and group. + * @param tagSize the tags name size. * @return The sql of querying configuration information. */ - String findConfigInfoByGroupAndAdvanceFetchRows(Map configAdvanceInfo); + String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize); /** * Get the count of config information by config tags relation. * The default sql: * SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id * - * @param configAdvanceInfo advance info * @param params the keys and values are dataId and group. + * @param tagSize the tags name size. * @return The sql of getting the count of config information. */ - String findConfigInfoLike4PageCountRows(Map configAdvanceInfo, final Map params); + String findConfigInfoLike4PageCountRows(final Map params, int tagSize); /** * Query config info. @@ -120,11 +114,11 @@ public interface ConfigTagsRelationMapper { * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content * FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id * - * @param configAdvanceInfo advance info * @param params the keys and values are dataId and group. + * @param tagSize the tags name size. * @return The sql of querying config info. */ - String findConfigInfoLike4PageFetchRows(Map configAdvanceInfo, final Map params); + String findConfigInfoLike4PageFetchRows(final Map params, int tagSize); /** * Add configuration; database atomic operation, minimum sql action, no business encapsulation. @@ -161,4 +155,38 @@ public interface ConfigTagsRelationMapper { * @return The sql of querying tag list */ String selectTagByConfig(); + + /** + * The number of config. + * The default sql: + * SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? + * + * @param params The map of appName. + * @param tagSize The size of tags. + * @return The number of config. + */ + String findConfigInfoByAdvanceCountRows(Map params, int tagSize); + + /** + * Query configuration information. + * The default sql: + * SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? + * + * @param params The map of appName. + * @param tagSize The size of tags. + * @return The sql of querying configuration information. + */ + String findConfigInfoByAdvanceFetchRows(Map params, int tagSize); + + /** + * The default sql: + * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN + * config_tags_relation b ON a.id=b.id WHERE a.data_id=? AND a.group_id=? AND a.tenant_id=? + * AND b.tag_name IN (...) ...; + * + * @param params The map of appName. + * @param tagSize the tags name size. + * @return * Query configuration information based on dataId and group. + */ + String findConfigInfoAdvanceInfo(Map params, int tagSize); }