From 398959d931ea0f028e61a8d4d0ce55baea4ddfaa Mon Sep 17 00:00:00 2001 From: The-Gamer-01 <58755323+The-Gamer-01@users.noreply.github.com> Date: Fri, 30 Sep 2022 16:54:08 +0800 Subject: [PATCH] [ISSUE #8312]Finish the datasource plugin. (#9226) * [ISSUE #8312]Finish the datasource plugin. * [ISSUE #8312]Update derby PersistService impl. --- config/pom.xml | 5 + .../EmbeddedPaginationHelperImpl.java | 20 +- .../EmbeddedStoragePersistServiceImpl.java | 841 ++++++++--------- .../ExternalStoragePaginationHelperImpl.java | 56 +- .../ExternalStoragePersistServiceImpl.java | 885 ++++++++---------- .../{manager => }/MapperManager.java | 39 +- .../DataSourceConstant.java} | 18 +- .../derby/ConfigInfoAggrMapperByDerby.java | 10 +- .../derby/ConfigInfoBetaMapperByDerby.java | 10 +- .../impl/derby/ConfigInfoMapperByDerby.java | 154 ++- .../derby/ConfigInfoTagMapperByDerby.java | 10 +- .../ConfigInfoTagsRelationMapperByDerby.java | 33 +- .../derby/HistoryConfigInfoMapperByDerby.java | 11 +- .../mysql/ConfigInfoAggrMapperByMySql.java | 8 +- .../mysql/ConfigInfoBetaMapperByMySql.java | 8 +- .../impl/mysql/ConfigInfoMapperByMySql.java | 77 +- .../mysql/ConfigInfoTagMapperByMySql.java | 8 +- .../ConfigTagsRelationMapperByMySql.java | 32 +- .../mysql/HistoryConfigInfoMapperByMySql.java | 10 +- .../mapper/ConfigInfoAggrMapper.java | 4 +- .../mapper/ConfigInfoBetaMapper.java | 4 +- .../datasource/mapper/ConfigInfoMapper.java | 74 +- .../mapper/ConfigInfoTagMapper.java | 4 +- .../mapper/ConfigTagsRelationMapper.java | 22 +- .../mapper/HistoryConfigInfoMapper.java | 4 +- .../plugin/datasource/mapper/Mapper.java | 6 + ...baba.nacos.plugin.datasource.mapper.Mapper | 29 + 27 files changed, 1188 insertions(+), 1194 deletions(-) rename plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/{manager => }/MapperManager.java (61%) rename plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/{manager/InitAndClosable.java => constants/DataSourceConstant.java} (70%) create mode 100644 plugin/datasource/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper diff --git a/config/pom.xml b/config/pom.xml index ee3356b8a56..26d396c9530 100644 --- a/config/pom.xml +++ b/config/pom.xml @@ -117,6 +117,11 @@ org.yaml snakeyaml + + com.alibaba.nacos + nacos-datasource-plugin + 2.1.1 + diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedPaginationHelperImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedPaginationHelperImpl.java index 452001c340f..c1f06a2a41d 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedPaginationHelperImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedPaginationHelperImpl.java @@ -85,10 +85,7 @@ public Page fetchPage(final String sqlCountRows, final String sqlFetchRows, f return page; } - final int startRow = (pageNo - 1) * pageSize; - String selectSql = sqlFetchRows + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; - - List result = databaseOperate.queryMany(selectSql, args, rowMapper); + List result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -123,8 +120,7 @@ public Page fetchPageLimit(final String sqlCountRows, final String sqlFetchRo return page; } - String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - List result = databaseOperate.queryMany(selectSql, args, rowMapper); + List result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -159,9 +155,7 @@ public Page fetchPageLimit(final String sqlCountRows, final Object[] args1, f return page; } - String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - - List result = databaseOperate.queryMany(selectSql, args2, rowMapper); + List result = databaseOperate.queryMany(sqlFetchRows, args2, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -177,9 +171,7 @@ public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, fi // Create Page object final Page page = new Page<>(); - String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - - List result = databaseOperate.queryMany(selectSql, args, rowMapper); + List result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -188,9 +180,7 @@ public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, fi @Override public void updateLimit(final String sql, final Object[] args) { - String sqlUpdate = sql.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"); - - EmbeddedStorageContextUtils.addSqlContext(sqlUpdate, args); + EmbeddedStorageContextUtils.addSqlContext(sql, args); try { databaseOperate.update(EmbeddedStorageContextUtils.getCurrentSqlContext()); } finally { diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java index 7ce0361d90c..584dc4c69ce 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedStoragePersistServiceImpl.java @@ -49,7 +49,16 @@ import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.config.server.utils.ParamUtils; import com.alibaba.nacos.core.distributed.id.IdGeneratorManager; +import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler; +import com.alibaba.nacos.sys.env.EnvUtil; import org.apache.commons.collections.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; import org.springframework.context.annotation.Conditional; @@ -61,6 +70,7 @@ import java.io.IOException; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -121,6 +131,24 @@ public class EmbeddedStoragePersistServiceImpl implements PersistService { private final IdGeneratorManager idGeneratorManager; + private MapperManager mapperManager; + + private String dataSource; + + private static final String DATASOURCE_PLATFORM_PROPERTY = "spring.datasource.platform"; + + private static final String DEFAULT_DATASOURCE_PLATFORM = "derby"; + + private static final String DATA_ID = "dataId"; + + private static final String GROUP = "group"; + + private static final String APP_NAME = "appName"; + + private static final String CONTENT = "content"; + + private static final String TENANT = "tenant_id"; + /** * The constructor sets the dependency injection order. * @@ -132,6 +160,8 @@ public EmbeddedStoragePersistServiceImpl(DatabaseOperate databaseOperate, IdGene this.idGeneratorManager = idGeneratorManager; NotifyCenter.registerToSharePublisher(DerbyImportEvent.class); + mapperManager = MapperManager.instance(); + dataSource = EnvUtil.getProperty(DATASOURCE_PLATFORM_PROPERTY, DEFAULT_DATASOURCE_PLATFORM); } /** @@ -226,10 +256,8 @@ public void addConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String src configInfo.setTenant(tenantTmp); try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - - final String sql = - "INSERT INTO config_info_beta(data_id,group_id,tenant_id,app_name,content,md5,beta_ips,src_ip," - + "src_user,gmt_create,gmt_modified,encrypted_data_key) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + final String sql = configInfoBetaMapper.addConfigInfo4Beta(); final Object[] args = new Object[] {configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, time, encryptedDataKey}; @@ -253,10 +281,9 @@ public void addConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp, S try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - - final String sql = - "INSERT INTO config_info_tag(data_id,group_id,tenant_id,tag_id,app_name,content,md5,src_ip,src_user," - + "gmt_create,gmt_modified) VALUES(?,?,?,?,?,?,?,?,?,?,?)"; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, + TableConstant.CONFIG_INFO_TAG).get(); + final String sql = configInfoTagMapper.addConfigInfo4Tag(); final Object[] args = new Object[] {configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, appNameTmp, configInfo.getContent(), md5, srcIp, srcUser, time, time}; @@ -356,8 +383,8 @@ public void updateConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String configInfo.setTenant(tenantTmp); try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - - final String sql = "UPDATE config_info_beta SET content=?,md5=?,beta_ips=?,src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key=? WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + final String sql = configInfoBetaMapper.updateConfigInfo4Beta(); final Object[] args = new Object[] {configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp}; @@ -381,7 +408,8 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - final String sql = "UPDATE config_info_beta SET content=?,md5=?,beta_ips=?,src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? OR md5 IS NULL OR md5='')"; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + final String sql = configInfoBetaMapper.updateConfigInfo4BetaCas(); final Object[] args = new Object[] {configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, configInfo.getMd5()}; @@ -407,7 +435,8 @@ public void updateConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - final String sql = "UPDATE config_info_tag SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=?"; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + final String sql = configInfoTagMapper.updateConfigInfo4Tag(); final Object[] args = new Object[] {configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp}; @@ -431,8 +460,8 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - - final String sql = "UPDATE config_info_tag SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=? AND (md5=? OR md5 IS NULL OR md5='')"; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + final String sql = configInfoTagMapper.updateConfigInfo4TagCas(); final Object[] args = new Object[] {configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, configInfo.getMd5()}; @@ -492,8 +521,9 @@ public boolean insertOrUpdateTagCas(final ConfigInfo configInfo, final String ta public void updateMd5(String dataId, String group, String tenant, String md5, Timestamp lastTime) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - - final String sql = "UPDATE config_info SET md5 = ? WHERE data_id=? AND group_id=? AND tenant_id=? AND gmt_modified=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + + final String sql = configInfoMapper.updateMd5(); final Object[] args = new Object[] {md5, dataId, group, tenantTmp, lastTime}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -617,7 +647,8 @@ public void removeConfigInfo4Beta(final String dataId, final String group, final ConfigInfo configInfo = findConfigInfo4Beta(dataId, group, tenant); if (configInfo != null) { try { - final String sql = "DELETE FROM config_info_beta WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + final String sql = configInfoBetaMapper.removeConfigInfo4Beta(); final Object[] args = new Object[] {dataId, group, tenantTmp}; EmbeddedStorageContextUtils.onDeleteConfigBetaInfo(tenantTmp, group, dataId, @@ -643,9 +674,10 @@ public boolean addAggrConfigInfo(final String dataId, final String group, String String contentTmp = StringUtils.isBlank(content) ? StringUtils.EMPTY : content; final Timestamp now = new Timestamp(System.currentTimeMillis()); - final String select = "SELECT content FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id = ?"; - final String insert = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; - final String update = "UPDATE config_info_aggr SET content = ? , gmt_modified = ? WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id = ?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final String select = configInfoAggrMapper.select(); + final String insert = configInfoAggrMapper.insert(); + final String update = configInfoAggrMapper.update(); String dbContent = databaseOperate.queryOne(select, new Object[] {dataId, group, tenantTmp, datumId}, String.class); @@ -674,7 +706,8 @@ public void removeSingleAggrConfigInfo(final String dataId, final String group, final String datumId) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? AND datum_id=?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final String sql = configInfoAggrMapper.removeSingleAggrConfigInfo(); final Object[] args = new Object[] {dataId, group, tenantTmp, datumId}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -691,8 +724,9 @@ public void removeSingleAggrConfigInfo(final String dataId, final String group, @Override public void removeAggrConfigInfo(final String dataId, final String group, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - - final String sql = "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=?"; + + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final String sql = configInfoAggrMapper.removeAggrConfigInfo(); final Object[] args = new Object[] {dataId, group, tenantTmp}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -715,9 +749,9 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St datumString.append('\'').append(datum).append("',"); } datumString.deleteCharAt(datumString.length() - 1); + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); final String sql = - "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? AND datum_id IN (" - + datumString.toString() + ")"; + configInfoAggrMapper.batchRemoveAggr(datumList); final Object[] args = new Object[] {dataId, group, tenantTmp}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -734,15 +768,16 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St @Override public void removeConfigHistory(final Timestamp startTime, final int limitSize) { - String sql = "DELETE FROM his_config_info WHERE id IN( " - + "SELECT id FROM his_config_info WHERE gmt_modified < ? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY)"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sql = historyConfigInfoMapper.removeConfigHistory(); PaginationHelper helper = createPaginationHelper(); helper.updateLimit(sql, new Object[] {startTime, limitSize}); } @Override public int findConfigHistoryCountByTime(final Timestamp startTime) { - String sql = "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); Integer result = databaseOperate.queryOne(sql, new Object[] {startTime}, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -752,7 +787,8 @@ public int findConfigHistoryCountByTime(final Timestamp startTime) { @Override public long findConfigMaxId() { - String sql = "SELECT max(id) FROM config_info"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findConfigMaxId(); return Optional.ofNullable(databaseOperate.queryOne(sql, Long.class)).orElse(0L); } @@ -785,8 +821,8 @@ public boolean replaceAggr(final String dataId, final String group, final String removeAggrConfigInfo(dataId, group, tenant); String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, " - + "content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final String sql = configInfoAggrMapper.replaceAggr(); for (Entry datumEntry : datumMap.entrySet()) { final Object[] args = new Object[] {dataId, group, tenantTmp, datumEntry.getKey(), appNameTmp, datumEntry.getValue(), new Timestamp(System.currentTimeMillis())}; @@ -807,14 +843,16 @@ public boolean replaceAggr(final String dataId, final String group, final String @Override public List findAllDataIdAndGroup() { - String sql = "SELECT DISTINCT data_id, group_id FROM config_info"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findAllDataIdAndGroup(); return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_ROW_MAPPER); } @Override public ConfigInfoBetaWrapper findConfigInfo4Beta(final String dataId, final String group, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,beta_ips,encrypted_data_key FROM config_info_beta WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant. CONFIG_INFO_BETA).get(); + final String sql = configInfoBetaMapper.findConfigInfo4Beta(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_BETA_WRAPPER_ROW_MAPPER); @@ -826,8 +864,8 @@ public ConfigInfoTagWrapper findConfigInfo4Tag(final String dataId, final String final String tag) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag.trim(); - - final String sql = "SELECT id,data_id,group_id,tenant_id,tag_id,app_name,content FROM config_info_tag WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=?"; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + final String sql = configInfoTagMapper.findConfigInfo4Tag(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp, tagTmp}, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); @@ -837,7 +875,8 @@ public ConfigInfoTagWrapper findConfigInfo4Tag(final String dataId, final String public ConfigInfo findConfigInfoApp(final String dataId, final String group, final String tenant, final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "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=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.findConfigInfoApp(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp, appName}, CONFIG_INFO_ROW_MAPPER); @@ -853,33 +892,21 @@ public ConfigInfo findConfigInfoAdvanceInfo(final String dataId, final String gr paramList.add(dataId); paramList.add(group); paramList.add(tenantTmp); - - 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=? "); + + String sql = null; + Map params = new HashMap<>(16); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + params.put(APP_NAME, APP_NAME); + } if (StringUtils.isNotBlank(configTags)) { - 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 ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); - paramList.add(tagArr[i]); - } - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sql = configTagsRelationMapper.findConfigInfoAdvanceInfo(params, paramList.size()); } else { - if (StringUtils.isNotBlank(appName)) { - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sql = configInfoMapper.findConfigInfoAdvanceInfo(params); } return databaseOperate.queryOne(sql.toString(), paramList.toArray(), CONFIG_INFO_ROW_MAPPER); @@ -887,7 +914,8 @@ public ConfigInfo findConfigInfoAdvanceInfo(final String dataId, final String gr @Override public ConfigInfoBase findConfigInfoBase(final String dataId, final String group) { - final String sql = "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.findConfigInfoBase(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, StringUtils.EMPTY}, CONFIG_INFO_BASE_ROW_MAPPER); @@ -895,16 +923,16 @@ public ConfigInfoBase findConfigInfoBase(final String dataId, final String group @Override public ConfigInfo findConfigInfo(long id) { - final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.findConfigInfoById(); return databaseOperate.queryOne(sql, new Object[] {id}, CONFIG_INFO_ROW_MAPPER); } @Override public ConfigInfoWrapper findConfigInfo(final String dataId, final String group, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String 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=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.findConfigInfoByDataId2Group2Tenant(); final Object[] args = new Object[] {dataId, group, tenantTmp}; return databaseOperate.queryOne(sql, args, CONFIG_INFO_WRAPPER_ROW_MAPPER); @@ -915,9 +943,10 @@ public Page findConfigInfoByDataId(final int pageNo, final int pageS final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND " - + "tenant_id=?", new Object[] {dataId, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByDataIdCountRows(), + configInfoMapper.findConfigInfoByDataIdFetchRows(startRow, pageSize), new Object[] {dataId, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @Override @@ -925,9 +954,10 @@ public Page findConfigInfoByDataIdAndApp(final int pageNo, final int final String tenant, final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? AND app_name=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND " - + "tenant_id=? AND app_name=?", new Object[] {dataId, tenantTmp, appName}, pageNo, pageSize, + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByDataIdAndAppCountRows(), + configInfoMapper.findConfigInfoByDataIdAndAppFetchRows(startRow, pageSize), new Object[] {dataId, tenantTmp, appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -937,46 +967,27 @@ public Page findConfigInfoByDataIdAndAdvance(final int pageNo, final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? "); + String sql = null; + String sqlCount = null; + Map paramsMap = new HashMap<>(16); List paramList = new ArrayList<>(); paramList.add(dataId); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - 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=? "); - - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByDataIdAndAdvanceCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByDataIdAndAdvanceFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByDataIdAndAdvanceCountRows(paramsMap); + sql = configInfoMapper.findConfigInfoByDataIdAndAdvanceFetchRows(paramsMap, startRow, pageSize); } PaginationHelper helper = createPaginationHelper(); @@ -990,58 +1001,37 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - String sqlCount = "SELECT count(*) FROM config_info"; - String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info"; - StringBuilder where = new StringBuilder(" WHERE "); + String sql = null; + String sqlCount = null; List paramList = new ArrayList<>(); paramList.add(tenantTmp); + Map paramsMap = new HashMap<>(16); + if (StringUtils.isNotBlank(dataId)) { + paramList.add(dataId); + paramsMap.put(DATA_ID, DATA_ID); + } + if (StringUtils.isNotBlank(group)) { + paramList.add(group); + paramsMap.put(GROUP, GROUP); + } + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id"; - 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=? "); - paramList.add(dataId); - } - if (StringUtils.isNotBlank(group)) { - where.append(" AND a.group_id=? "); - paramList.add(group); - } - if (StringUtils.isNotBlank(appName)) { - where.append(" AND a.app_name=? "); - paramList.add(appName); - } - - where.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - paramList.add(tagArr[i]); - } - where.append(") "); + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - where.append(" tenant_id=? "); - if (StringUtils.isNotBlank(dataId)) { - where.append(" AND data_id=? "); - paramList.add(dataId); - } - if (StringUtils.isNotBlank(group)) { - where.append(" AND group_id=? "); - paramList.add(group); - } - if (StringUtils.isNotBlank(appName)) { - where.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); + sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); } PaginationHelper helper = createPaginationHelper(); - Page page = helper.fetchPage(sqlCount + where, sql + where, paramList.toArray(), pageNo, pageSize, + Page page = helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { @@ -1056,8 +1046,10 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize @Override public Page findConfigInfoBaseByDataId(final int pageNo, final int pageSize, final String dataId) { PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final int startRow = (pageNo - 1) * pageSize; + return helper.fetchPage(configInfoMapper.findConfigInfoBaseByDataIdCountRows(), + configInfoMapper.findConfigInfoBaseByDataIdFetchRows(startRow, pageSize), new Object[] {dataId, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @@ -1067,9 +1059,10 @@ public Page findConfigInfoByGroup(final int pageNo, final int pageSi final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " - + "tenant_id=?", new Object[] {group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByGroupCountRows(), + configInfoMapper.findConfigInfoByGroupFetchRows(startRow, pageSize), new Object[] {group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1078,9 +1071,10 @@ public Page findConfigInfoByGroupAndApp(final int pageNo, final int final String tenant, final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " - + "tenant_id=? AND app_name =?", new Object[] {group, tenantTmp, appName}, pageNo, pageSize, + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByGroupAndAppCountRows(), + configInfoMapper.findConfigInfoByGroupAndAppFetchRows(startRow, pageSize), new Object[] {group, tenantTmp, appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1092,49 +1086,31 @@ public Page findConfigInfoByGroupAndAdvance(final int pageNo, final final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder( - "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? "); + String sqlCount = null; + String sql = null; + Map params = new HashMap<>(16); + List paramList = new ArrayList<>(); paramList.add(group); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + params.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - 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=? "); - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByGroupAndAdvanceCountRows(params, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByGroupAndAdvanceFetchRows(params, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByGroupAndAdvanceCountRows(params); + sql = configInfoMapper.findConfigInfoByGroupAndAdvanceFetchRows(params, startRow, pageSize); } PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCount.toString(), sql.toString(), paramList.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1144,9 +1120,10 @@ public Page findConfigInfoByApp(final int pageNo, final int pageSize final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name=?", - "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND " - + "app_name=?", new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), + configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1157,45 +1134,27 @@ public Page findConfigInfoByAdvance(final int pageNo, final int page String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info where tenant_id LIKE ? "); + String sqlCount = null; + String sql = null; + Map paramsMap = new HashMap<>(16); + List paramList = new ArrayList<>(); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCount = new StringBuilder( - "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); - - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByAdvanceCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByAdvanceFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByAdvanceCountRows(paramsMap); + sql = configInfoMapper.findConfigInfoByAdvanceFetchRows(paramsMap, startRow, pageSize); } PaginationHelper helper = createPaginationHelper(); return helper.fetchPage(sqlCount.toString(), sql.toString(), paramList.toArray(), pageNo, pageSize, @@ -1206,14 +1165,17 @@ public Page findConfigInfoByAdvance(final int pageNo, final int page @Override public Page findConfigInfoBaseByGroup(final int pageNo, final int pageSize, final String group) { PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoBaseByGroupCountRows(), + configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @Override public int configInfoCount() { - String sql = " SELECT count(*) FROM config_info "; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.count(); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); @@ -1223,7 +1185,8 @@ public int configInfoCount() { @Override public int configInfoCount(String tenant) { - String sql = " SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.configInfoLikeTenantCount(); Integer result = databaseOperate.queryOne(sql, new Object[] {tenant}, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); @@ -1233,7 +1196,8 @@ public int configInfoCount(String tenant) { @Override public int configInfoBetaCount() { - String sql = " SELECT count(*) FROM config_info_beta "; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + String sql = configInfoBetaMapper.count(); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -1243,7 +1207,8 @@ public int configInfoBetaCount() { @Override public int configInfoTagCount() { - String sql = " SELECT count(*) FROM config_info_tag "; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + String sql = configInfoTagMapper.configInfoTagCount(); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -1254,8 +1219,10 @@ public int configInfoTagCount() { @Override public List getTenantIdList(int page, int pageSize) { PaginationHelper> helper = createPaginationHelper(); + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.getTenantIdList(); - String sql = "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id LIMIT ?,?"; int from = (page - 1) * pageSize; Page> pageList = helper.fetchPageLimit(sql, new Object[] {from, pageSize}, page, pageSize, @@ -1268,7 +1235,8 @@ public List getTenantIdList(int page, int pageSize) { public List getGroupIdList(int page, int pageSize) { PaginationHelper> helper = createPaginationHelper(); - String sql = "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT ?,?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.getGroupIdList(); int from = (page - 1) * pageSize; Page> pageList = helper.fetchPageLimit(sql, new Object[] {from, pageSize}, page, pageSize, @@ -1280,7 +1248,8 @@ public List getGroupIdList(int page, int pageSize) { @Override public int aggrConfigInfoCount(String dataId, String group, String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.aggrConfigInfoCount(); Integer result = databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, Integer.class); if (result == null) { throw new IllegalArgumentException("aggrConfigInfoCount error"); @@ -1294,20 +1263,8 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< return 0; } final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - 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(')'); + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.aggrConfigInfoCount(datumIds, isIn); List objectList = com.alibaba.nacos.common.utils.CollectionUtils.list(dataId, group, tenantTmp); objectList.addAll(datumIds); @@ -1332,11 +1289,11 @@ public int aggrConfigInfoCountNotIn(String dataId, String group, String tenant, @Override public Page findAllConfigInfo(final int pageNo, final int pageSize, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = " 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 "; - + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {generateLikeArgument(tenantTmp), (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, @@ -1347,9 +1304,8 @@ public Page findAllConfigInfo(final int pageNo, final int pageSize, @Override public Page findAllConfigKey(final int pageNo, final int pageSize, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String select = " 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 "; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String select = configInfoMapper.findAllConfigKey(); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -1379,11 +1335,11 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi @Override public Page findAllConfigInfoBase(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = "SELECT t.id,data_id,group_id,content,md5 " - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) " - + " g, config_info t WHERE g.id = t.id "; - + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); @@ -1392,11 +1348,11 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa @Override public Page findAllConfigInfoForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = " SELECT t.id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? )" - + " g, config_info t WHERE g.id = t.id "; - + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoForDumpAllFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, @@ -1406,9 +1362,8 @@ public Page findAllConfigInfoForDumpAll(final int pageNo, fin @Override public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { - String select = - "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 ?,?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String select = configInfoMapper.findAllConfigInfoFragment(); PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(select, new Object[] {lastMaxId, 0, pageSize}, 1, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); @@ -1417,10 +1372,11 @@ public Page findAllConfigInfoFragment(final long lastMaxId, f @Override public Page findAllConfigInfoBetaForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info_beta"; - String sqlFetchRows = " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? )" - + " g, config_info_beta t WHERE g.id = t.id "; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + String sqlCountRows = configInfoBetaMapper.count(); + String sqlFetchRows = + configInfoBetaMapper.findAllConfigInfoBetaForDumpAllFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_BETA_WRAPPER_ROW_MAPPER); @@ -1429,10 +1385,11 @@ public Page findAllConfigInfoBetaForDumpAll(final int pag @Override public Page findAllConfigInfoTagForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info_tag"; - String sqlFetchRows = " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,? ) " - + " g, config_info_tag t WHERE g.id = t.id "; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + String sqlCountRows = configInfoTagMapper.count(); + String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); @@ -1456,27 +1413,17 @@ public List findConfigInfoByBatch(final List dataIds, final } List result = new ArrayList<>(dataIds.size()); - 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(); - + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); for (int i = 0; i < dataIds.size(); i += subQueryLimit) { // dataids List params = new ArrayList<>( dataIds.subList(i, Math.min(i + subQueryLimit, dataIds.size()))); - for (int j = 0; j < params.size(); j++) { - subQuerySql.append('?'); - if (j != params.size() - 1) { - subQuerySql.append(','); - } - } - // group params.add(0, group); params.add(1, tenantTmp); - final String sql = sqlStart + subQuerySql.toString() + sqlEnd; + final String sql = configInfoMapper.findConfigInfoByBatch(params.size()); List r = databaseOperate.queryMany(sql, params.toArray(), CONFIG_INFO_ROW_MAPPER); @@ -1499,34 +1446,33 @@ public Page findConfigInfoLike(final int pageNo, final int pageSize, return this.findConfigInfoByApp(pageNo, pageSize, tenantTmp, appName); } } - - final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE "; - String where = " 1=1 "; List params = new ArrayList<>(); - + Map paramsMap = new HashMap<>(16); if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; + paramsMap.put(DATA_ID, DATA_ID); params.add(generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE ? "; + paramsMap.put(GROUP, GROUP); params.add(generateLikeArgument(group)); } - - where += " AND tenant_id LIKE ? "; + params.add(generateLikeArgument(tenantTmp)); - + if (!StringUtils.isBlank(appName)) { - where += " AND app_name = ? "; + paramsMap.put(APP_NAME, APP_NAME); params.add(appName); } if (!StringUtils.isBlank(content)) { - where += " AND content LIKE ? "; + paramsMap.put(CONTENT, CONTENT); params.add(generateLikeArgument(content)); } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoMapper.findConfigInfoLikeCountRows(paramsMap); + String sqlFetchRows = configInfoMapper.findConfigInfoLikeFetchRows(paramsMap, startRow, pageSize); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1632,66 +1578,42 @@ public Page findConfigInfoLike4Page(final int pageNo, final int page final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String content = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("content"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; - StringBuilder where = new StringBuilder(" WHERE "); + String sqlCountRows = null; + String sqlFetchRows = null; + Map paramsMap = new HashMap<>(16); + List params = new ArrayList<>(); params.add(generateLikeArgument(tenantTmp)); + if (!StringUtils.isBlank(dataId)) { + params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); + } + if (!StringUtils.isBlank(group)) { + params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); + } + if (!StringUtils.isBlank(appName)) { + params.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + if (!StringUtils.isBlank(content)) { + params.add(generateLikeArgument(content)); + paramsMap.put(CONTENT, CONTENT); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCountRows = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; - 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 ? "); - params.add(generateLikeArgument(dataId)); - } - if (!StringUtils.isBlank(group)) { - where.append(" AND a.group_id LIKE ? "); - params.add(generateLikeArgument(group)); - } - if (!StringUtils.isBlank(appName)) { - where.append(" AND a.app_name = ? "); - params.add(appName); - } - if (!StringUtils.isBlank(content)) { - where.append(" AND a.content LIKE ? "); - params.add(generateLikeArgument(content)); - } - - where.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - params.add(tagArr[i]); - } - where.append(") "); + params.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, params.size()); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(paramsMap, params.size(), startRow, pageSize); } else { - where.append(" tenant_id LIKE ? "); - if (!StringUtils.isBlank(dataId)) { - where.append(" AND data_id LIKE ? "); - params.add(generateLikeArgument(dataId)); - } - if (!StringUtils.isBlank(group)) { - where.append(" AND group_id LIKE ? "); - params.add(generateLikeArgument(group)); - } - if (!StringUtils.isBlank(appName)) { - where.append(" AND app_name = ? "); - params.add(appName); - } - if (!StringUtils.isBlank(content)) { - where.append(" AND content LIKE ? "); - params.add(generateLikeArgument(content)); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); } PaginationHelper helper = createPaginationHelper(); - Page page = helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, + Page page = helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), @@ -1708,26 +1630,28 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } - - final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; - String where = " 1=1 AND tenant_id='' "; + + Map paramsMap = new HashMap<>(16); List params = new ArrayList<>(); - if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE ? "; params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); } if (!StringUtils.isBlank(content)) { - where += " AND content LIKE ? "; params.add(generateLikeArgument(content)); + paramsMap.put(CONTENT, CONTENT); } + + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); + String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @@ -1735,9 +1659,8 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p @Override public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, String tenant, String datumId) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = - "SELECT id,data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? " - + "AND group_id=? AND tenant_id=? AND datum_id=?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findSingleConfigInfoAggr(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp, datumId}, CONFIG_INFO_AGGR_ROW_MAPPER); @@ -1747,9 +1670,8 @@ public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, Stri @Override public List findConfigInfoAggr(String dataId, String group, String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = - "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND " - + "group_id=? AND tenant_id=? ORDER BY datum_id"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findConfigInfoAggr(); return databaseOperate.queryMany(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_AGGR_ROW_MAPPER); @@ -1759,10 +1681,11 @@ public List findConfigInfoAggr(String dataId, String group, Stri public Page findConfigInfoAggrByPage(String dataId, String group, String tenant, final int pageNo, final int pageSize) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; - String sqlFetchRows = - "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND " - + "group_id=? AND tenant_id=? ORDER BY datum_id LIMIT ?,?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoAggrMapper.findConfigInfoAggrByPageCountRows(); + String sqlFetchRows = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, new Object[] {dataId, group, tenantTmp, (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, @@ -1866,7 +1789,8 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p @Override public List findAllAggrGroup() { - String sql = "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findAllAggrGroup(); return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_CHANGED_ROW_MAPPER); @@ -1874,17 +1798,16 @@ public List findAllAggrGroup() { @Override public List findDatumIdByContent(String dataId, String groupId, String content) { - String sql = "SELECT datum_id FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND content = ? "; - + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findDatumIdByContent(); return databaseOperate.queryMany(sql, new Object[] {dataId, groupId, content}, String.class); } @Override public List findChangeConfig(final Timestamp startTime, final Timestamp endTime) { - List> list = databaseOperate.queryMany( - "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified FROM config_info WHERE " - + "gmt_modified >=? AND gmt_modified <= ?", new Object[] {startTime, endTime}); + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + List> list = databaseOperate.queryMany(configInfoMapper.findChangeConfig(), new Object[] {startTime, endTime}); return convertChangeConfig(list); } @@ -1894,48 +1817,47 @@ public Page findChangeConfig(final String dataId, final Strin final String appName, final Timestamp startTime, final Timestamp endTime, final int pageNo, final int pageSize, final long lastMaxId) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info WHERE "; - String where = " 1=1 "; + Map paramsMap = new HashMap<>(16); List params = new ArrayList<>(); - if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE ? "; params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); } - + if (!StringUtils.isBlank(tenantTmp)) { - where += " AND tenant_id = ? "; params.add(tenantTmp); + paramsMap.put(TENANT, TENANT); } - + if (!StringUtils.isBlank(appName)) { - where += " AND app_name = ? "; params.add(appName); + paramsMap.put(APP_NAME, APP_NAME); } if (startTime != null) { - where += " AND gmt_modified >=? "; params.add(startTime); } if (endTime != null) { - where += " AND gmt_modified <=? "; params.add(endTime); } + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); + String sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, pageSize, lastMaxId); + PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @Override public List findDeletedConfig(final Timestamp startTime, final Timestamp endTime) { - List> list = databaseOperate.queryMany( - "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND " - + "gmt_modified >=? AND gmt_modified <= ?", new Object[] {startTime, endTime}); + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + List> list = databaseOperate.queryMany(historyConfigInfoMapper.findDeletedConfig(), new Object[] {startTime, endTime}); return convertDeletedConfig(list); } @@ -1955,10 +1877,8 @@ public long addConfigInfoAtomic(final long id, final String srcIp, final String final String md5Tmp = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); final String encryptedDataKey = configInfo.getEncryptedDataKey() == null ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); - - final String sql = - "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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.addConfigInfoAtomic(); final Object[] args = new Object[] {id, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, time, desc, use, effect, type, schema, encryptedDataKey}; @@ -1968,8 +1888,8 @@ public long addConfigInfoAtomic(final long id, final String srcIp, final String @Override public void addConfigTagRelationAtomic(long configId, String tagName, String dataId, String group, String tenant) { - final String sql = "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) " - + "VALUES(?,?,?,?,?,?)"; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + final String sql = configTagsRelationMapper.addConfigTagRelationAtomic(); final Object[] args = new Object[] {configId, tagName, StringUtils.EMPTY, dataId, group, tenant}; EmbeddedStorageContextUtils.addSqlContext(sql, args); } @@ -1986,20 +1906,23 @@ public void addConfigTagsRelation(long configId, String configTags, String dataI @Override public void removeTagByIdAtomic(long id) { - final String sql = "DELETE FROM config_tags_relation WHERE id=?"; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + final String sql = configTagsRelationMapper.removeTagByIdAtomic(); final Object[] args = new Object[] {id}; EmbeddedStorageContextUtils.addSqlContext(sql, args); } @Override public List getConfigTagsByTenant(String tenant) { - String sql = "SELECT tag_name FROM config_tags_relation WHERE tenant_id = ? "; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + String sql = configTagsRelationMapper.getConfigTagsByTenant(); return databaseOperate.queryMany(sql, new Object[] {tenant}, String.class); } @Override public List selectTagByConfig(String dataId, String group, String tenant) { - String sql = "SELECT tag_name FROM config_tags_relation WHERE data_id=? AND group_id=? AND tenant_id = ? "; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + String sql = configTagsRelationMapper.selectTagByConfig(); return databaseOperate.queryMany(sql, new Object[] {dataId, group, tenant}, String.class); } @@ -2007,8 +1930,8 @@ public List selectTagByConfig(String dataId, String group, String tenant public void removeConfigInfoAtomic(final String dataId, final String group, final String tenant, final String srcIp, final String srcUser) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - - final String sql = "DELETE FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.removeConfigInfoAtomic(); final Object[] args = new Object[] {dataId, group, tenantTmp}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -2019,18 +1942,13 @@ public void removeConfigInfoByIdsAtomic(final String ids) { if (StringUtils.isBlank(ids)) { return; } - StringBuilder sql = new StringBuilder(SQL_DELETE_CONFIG_INFO_BY_IDS); - sql.append("id IN ("); List paramList = new ArrayList<>(); String[] tagArr = ids.split(","); for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); paramList.add(Long.parseLong(tagArr[i])); } - sql.append(") "); + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); EmbeddedStorageContextUtils.addSqlContext(sql.toString(), paramList.toArray()); } @@ -2039,8 +1957,9 @@ public void removeConfigInfoTag(final String dataId, final String group, final S final String srcIp, final String srcUser) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag; - - final String sql = "DELETE FROM config_info_tag WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=?"; + + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + final String sql = configInfoTagMapper.removeConfigInfoTag(); final Object[] args = new Object[] {dataId, group, tenantTmp, tagTmp}; EmbeddedStorageContextUtils.onDeleteConfigTagInfo(tenantTmp, group, dataId, tagTmp, srcIp); @@ -2067,10 +1986,9 @@ public void updateConfigInfoAtomic(final ConfigInfo configInfo, final String src final String schema = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("schema"); final String encryptedDataKey = configInfo.getEncryptedDataKey() == null ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); - - final String sql = "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=?"; - + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.updateConfigInfoAtomic(); final Object[] args = new Object[] {configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp}; @@ -2089,9 +2007,9 @@ private void updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String final String effect = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("effect"); final String type = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("type"); final String schema = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("schema"); - - final String sql = "UPDATE config_info SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=?," - + "c_desc=?,c_use=?,effect=?,type=?,c_schema=? WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? OR md5 IS NULL OR md5='')"; + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.updateConfigInfoAtomic(); final Object[] args = new Object[] {configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, @@ -2105,19 +2023,13 @@ public List findConfigInfosByIds(final String ids) { if (StringUtils.isBlank(ids)) { return null; } - StringBuilder sql = new StringBuilder(SQL_FIND_CONFIG_INFO_BY_IDS); - sql.append("id IN ("); List paramList = new ArrayList<>(); String[] tagArr = ids.split(","); for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); paramList.add(Long.parseLong(tagArr[i])); } - sql.append(") "); - return databaseOperate.queryMany(sql.toString(), paramList.toArray(), CONFIG_INFO_ROW_MAPPER); + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return databaseOperate.queryMany(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), CONFIG_INFO_ROW_MAPPER); } @@ -2126,8 +2038,8 @@ public ConfigAdvanceInfo findConfigAdvanceInfo(final String dataId, final String final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; List configTagList = this.selectTagByConfig(dataId, group, tenant); - ConfigAdvanceInfo configAdvance = databaseOperate.queryOne( - "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=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + ConfigAdvanceInfo configAdvance = databaseOperate.queryOne(configInfoMapper.findConfigAdvanceInfo(), new Object[] {dataId, group, tenantTmp}, CONFIG_ADVANCE_INFO_ROW_MAPPER); if (CollectionUtils.isNotEmpty(configTagList)) { @@ -2148,9 +2060,8 @@ public ConfigAdvanceInfo findConfigAdvanceInfo(final String dataId, final String public ConfigAllInfo findConfigAllInfo(final String dataId, final String group, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "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=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.findConfigAllInfo(); List configTagList = selectTagByConfig(dataId, group, tenant); @@ -2180,8 +2091,8 @@ public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInf String encryptedDataKey = StringUtils.isBlank(configInfo.getEncryptedDataKey()) ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); - final String sql = "INSERT INTO his_config_info (id,data_id,group_id,tenant_id,app_name,content,md5," - + "src_ip,src_user,gmt_modified,op_type,encrypted_data_key) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + final String sql = historyConfigInfoMapper.insertConfigHistoryAtomic(); final Object[] args = new Object[] {configHistoryId, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, ops, encryptedDataKey}; @@ -2192,9 +2103,12 @@ public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInf public Page findConfigHistory(String dataId, String group, String tenant, int pageNo, int pageSize) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM his_config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; - String sqlFetchRows = "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC"; + final int startRow = (pageNo - 1) * pageSize; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlCountRows = historyConfigInfoMapper.findConfigHistoryCountRows(); + String sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(startRow, pageSize); + PaginationHelper helper = createPaginationHelper(); return helper.fetchPage(sqlCountRows, sqlFetchRows, new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, HISTORY_LIST_ROW_MAPPER); @@ -2235,13 +2149,15 @@ public void updateConfigSubAtomic(final String dataId, final String group, final @Override public ConfigHistoryInfo detailConfigHistory(Long nid) { - String sqlFetchRows = "SELECT nid,data_id,group_id,tenant_id,app_name,content,md5,src_user,src_ip,op_type,gmt_create,gmt_modified,encrypted_data_key FROM his_config_info WHERE nid = ?"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlFetchRows = historyConfigInfoMapper.detailConfigHistory(); return databaseOperate.queryOne(sqlFetchRows, new Object[] {nid}, HISTORY_DETAIL_ROW_MAPPER); } @Override public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { - String sqlFetchRows = "SELECT nid,data_id,group_id,tenant_id,app_name,content,md5,src_user,src_ip,op_type,gmt_create,gmt_modified FROM his_config_info WHERE nid = (SELECT max(nid) FROM his_config_info WHERE id = ?)"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); return databaseOperate.queryOne(sqlFetchRows, new Object[] {id}, HISTORY_DETAIL_ROW_MAPPER); } @@ -2357,8 +2273,9 @@ public List listAllGroupKeyMd5() { @Override public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { - String sqlCountRows = " SELECT count(*) FROM config_info "; - String sqlFetchRows = " SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) g, config_info t WHERE g.id = t.id"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows(); PaginationHelper helper = createPaginationHelper(); Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); @@ -2380,7 +2297,8 @@ public String generateLikeArgument(String s) { @Override public ConfigInfoWrapper queryConfigInfo(final String dataId, final String group, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - final String sql = "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=?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.queryConfigInfo(); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @@ -2442,35 +2360,28 @@ public Boolean completeMd5() { public List findAllConfigInfo4Export(final String dataId, final String group, final String tenant, final String appName, final List ids) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - StringBuilder where = new StringBuilder(" WHERE "); + Map params = new HashMap<>(16); List paramList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ids)) { - where.append(" id IN ("); - for (int i = 0; i < ids.size(); i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - paramList.add(ids.get(i)); - } - where.append(") "); + paramList.addAll(ids); } else { - where.append(" tenant_id=? "); paramList.add(tenantTmp); if (!StringUtils.isBlank(dataId)) { - where.append(" AND data_id LIKE ? "); paramList.add(generateLikeArgument(dataId)); + params.put(DATA_ID, DATA_ID); } if (StringUtils.isNotBlank(group)) { - where.append(" AND group_id=? "); paramList.add(group); + params.put(GROUP, GROUP); } if (StringUtils.isNotBlank(appName)) { - where.append(" AND app_name=? "); paramList.add(appName); + params.put(APP_NAME, APP_NAME); } } - return databaseOperate.queryMany(SQL_FIND_ALL_CONFIG_INFO + where, paramList.toArray(), + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); + return databaseOperate.queryMany(SQL_FIND_ALL_CONFIG_INFO, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePaginationHelperImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePaginationHelperImpl.java index 66dc082d15c..a0478feb5c4 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePaginationHelperImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePaginationHelperImpl.java @@ -19,8 +19,6 @@ import com.alibaba.nacos.config.server.model.Page; import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils; -import com.alibaba.nacos.config.server.utils.PropertyUtil; -import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -86,17 +84,7 @@ public Page fetchPage(final String sqlCountRows, final String sqlFetchRows, f return page; } - final int startRow = (pageNo - 1) * pageSize; - String selectSql = ""; - if (isDerby()) { - selectSql = sqlFetchRows + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; - } else if (lastMaxId != null) { - selectSql = sqlFetchRows + " AND id > " + lastMaxId + " ORDER BY id ASC" + " LIMIT " + 0 + "," + pageSize; - } else { - selectSql = sqlFetchRows + " LIMIT " + startRow + "," + pageSize; - } - - List result = jdbcTemplate.query(selectSql, args, rowMapper); + List result = jdbcTemplate.query(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -130,13 +118,8 @@ public Page fetchPageLimit(final String sqlCountRows, final String sqlFetchRo if (pageNo > pageCount) { return page; } - - String selectSql = sqlFetchRows; - if (isDerby()) { - selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - } - - List result = jdbcTemplate.query(selectSql, args, rowMapper); + + List result = jdbcTemplate.query(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -170,13 +153,7 @@ public Page fetchPageLimit(final String sqlCountRows, final Object[] args1, f if (pageNo > pageCount) { return page; } - - String selectSql = sqlFetchRows; - if (isDerby()) { - selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - } - - List result = jdbcTemplate.query(selectSql, args2, rowMapper); + List result = jdbcTemplate.query(sqlFetchRows, args2, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -191,13 +168,7 @@ public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, fi } // Create Page object final Page page = new Page<>(); - - String selectSql = sqlFetchRows; - if (isDerby()) { - selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"); - } - - List result = jdbcTemplate.query(selectSql, args, rowMapper); + List result = jdbcTemplate.query(sqlFetchRows, args, rowMapper); for (E item : result) { page.getPageItems().add(item); } @@ -206,14 +177,8 @@ public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, fi @Override public void updateLimit(final String sql, final Object[] args) { - String sqlUpdate = sql; - - if (isDerby()) { - sqlUpdate = sqlUpdate.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"); - } - try { - jdbcTemplate.update(sqlUpdate, args); + jdbcTemplate.update(sql, args); } finally { EmbeddedStorageContextUtils.cleanAllContext(); } @@ -222,10 +187,6 @@ public void updateLimit(final String sql, final Object[] args) { public int updateLimitWithResponse(final String sql, final Object[] args) { String sqlUpdate = sql; - if (isDerby()) { - sqlUpdate = sqlUpdate.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"); - } - try { return jdbcTemplate.update(sqlUpdate, args); } finally { @@ -233,9 +194,4 @@ public int updateLimitWithResponse(final String sql, final Object[] args) { } } - private boolean isDerby() { - return (EnvUtil.getStandaloneMode() && !PropertyUtil.isUseExternalDB()) || PropertyUtil - .isEmbeddedStorage(); - } - } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java index e05a6f1fb34..7c684234824 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalStoragePersistServiceImpl.java @@ -19,6 +19,7 @@ import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.common.utils.MD5Utils; import com.alibaba.nacos.common.utils.Pair; +import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.config.server.configuration.ConditionOnExternalStorage; import com.alibaba.nacos.config.server.constant.Constants; import com.alibaba.nacos.config.server.enums.FileTypeEnum; @@ -43,9 +44,17 @@ import com.alibaba.nacos.config.server.service.repository.PersistService; import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.config.server.utils.ParamUtils; +import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler; +import com.alibaba.nacos.sys.env.EnvUtil; import org.apache.commons.collections.CollectionUtils; -import com.alibaba.nacos.common.utils.StringUtils; import org.springframework.context.annotation.Conditional; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; @@ -72,12 +81,12 @@ import java.sql.Statement; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.concurrent.TimeUnit; import static com.alibaba.nacos.config.server.service.repository.RowMapperManager.CONFIG_ADVANCE_INFO_ROW_MAPPER; import static com.alibaba.nacos.config.server.service.repository.RowMapperManager.CONFIG_ALL_INFO_ROW_MAPPER; @@ -122,6 +131,24 @@ public class ExternalStoragePersistServiceImpl implements PersistService { protected TransactionTemplate tjt; + private MapperManager mapperManager; + + private String dataSource; + + private static final String DATASOURCE_PLATFORM_PROPERTY = "spring.datasource.platform"; + + private static final String DEFAULT_DATASOURCE_PLATFORM = "mysql"; + + private static final String DATA_ID = "dataId"; + + private static final String GROUP = "group"; + + private static final String APP_NAME = "appName"; + + private static final String CONTENT = "content"; + + private static final String TENANT = "tenant_id"; + /** * constant variables. */ @@ -136,6 +163,8 @@ public void init() { jt = getJdbcTemplate(); tjt = getTransactionTemplate(); + mapperManager = MapperManager.instance(); + dataSource = EnvUtil.getProperty(DATASOURCE_PLATFORM_PROPERTY, DEFAULT_DATASOURCE_PLATFORM); } public boolean checkMasterWritable() { @@ -201,8 +230,8 @@ public void addConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String src String encryptedDataKey = StringUtils.isBlank(configInfo.getEncryptedDataKey()) ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); try { - jt.update("INSERT INTO config_info_beta(data_id,group_id,tenant_id,app_name,content,md5,beta_ips,src_ip," - + "src_user,gmt_create,gmt_modified,encrypted_data_key) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)", + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + jt.update(configInfoBetaMapper.addConfigInfo4Beta(), configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, time, encryptedDataKey); } catch (CannotGetJdbcConnectionException e) { @@ -219,9 +248,9 @@ public void addConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp, S String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag.trim(); String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); try { - jt.update( - "INSERT INTO config_info_tag(data_id,group_id,tenant_id,tag_id,app_name,content,md5,src_ip,src_user," - + "gmt_create,gmt_modified) VALUES(?,?,?,?,?,?,?,?,?,?,?)", configInfo.getDataId(), + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, + TableConstant.CONFIG_INFO_TAG).get(); + jt.update(configInfoTagMapper.addConfigInfo4Tag(), configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, appNameTmp, configInfo.getContent(), md5, srcIp, srcUser, time, time); } catch (CannotGetJdbcConnectionException e) { @@ -306,9 +335,8 @@ public void updateConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String String encryptedDataKey = StringUtils.isBlank(configInfo.getEncryptedDataKey()) ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); try { - jt.update( - "UPDATE config_info_beta SET content=?, md5=?, beta_ips=?, src_ip=?,src_user=?,gmt_modified=?,app_name=?,encrypted_data_key=? " - + " WHERE data_id=? AND group_id=? AND tenant_id=?", configInfo.getContent(), md5, betaIps, srcIp, srcUser, + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + jt.update(configInfoBetaMapper.updateConfigInfo4Beta(), configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -323,11 +351,10 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S String tenantTmp = StringUtils.isBlank(configInfo.getTenant()) ? StringUtils.EMPTY : configInfo.getTenant(); String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); try { - return jt - .update("UPDATE config_info_beta SET content=?, md5=?, beta_ips=?, src_ip=?,src_user=?,gmt_modified=?,app_name=? " - + " WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? or md5 is null or md5='')", - configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), - configInfo.getGroup(), tenantTmp, configInfo.getMd5()) > 0; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + return jt.update(configInfoBetaMapper.updateConfigInfo4BetaCas(), + configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), + configInfo.getGroup(), tenantTmp, configInfo.getMd5()) > 0; } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -342,9 +369,8 @@ public void updateConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag.trim(); try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - jt.update( - "UPDATE config_info_tag SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE " - + "data_id=? AND group_id=? AND tenant_id=? AND tag_id=?", configInfo.getContent(), md5, + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + jt.update(configInfoTagMapper.updateConfigInfo4Tag(), configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -360,9 +386,9 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag.trim(); try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); return jt - .update("UPDATE config_info_tag SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?,app_name=? WHERE " - + "data_id=? AND group_id=? AND tenant_id=? AND tag_id=? AND (md5=? or md5 is null or md5='')", + .update(configInfoTagMapper.updateConfigInfo4TagCas(), configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, configInfo.getMd5()) > 0; } catch (CannotGetJdbcConnectionException e) { @@ -417,8 +443,8 @@ public boolean insertOrUpdateTagCas(final ConfigInfo configInfo, final String ta public void updateMd5(String dataId, String group, String tenant, String md5, Timestamp lastTime) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - jt.update( - "UPDATE config_info SET md5 = ? WHERE data_id=? AND group_id=? AND tenant_id=? AND gmt_modified=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + jt.update(configInfoMapper.updateMd5(), md5, dataId, group, tenantTmp, lastTime); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -529,7 +555,8 @@ public void removeConfigInfo4Beta(final String dataId, final String group, final try { ConfigInfo configInfo = findConfigInfo4Beta(dataId, group, tenant); if (configInfo != null) { - jt.update("DELETE FROM config_info_beta WHERE data_id=? AND group_id=? AND tenant_id=?", dataId, + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + jt.update(configInfoBetaMapper.removeConfigInfo4Beta(), dataId, group, tenantTmp); } } catch (CannotGetJdbcConnectionException e) { @@ -548,9 +575,10 @@ public boolean addAggrConfigInfo(final String dataId, final String group, String String appNameTmp = StringUtils.isBlank(appName) ? StringUtils.EMPTY : appName; String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; final Timestamp now = new Timestamp(System.currentTimeMillis()); - String select = "SELECT content FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id = ?"; - String insert = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; - String update = "UPDATE config_info_aggr SET content = ? , gmt_modified = ? WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id = ?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String select = configInfoAggrMapper.select(); + String insert = configInfoAggrMapper.insert(); + String update = configInfoAggrMapper.update(); try { try { @@ -575,7 +603,8 @@ public boolean addAggrConfigInfo(final String dataId, final String group, String public void removeSingleAggrConfigInfo(final String dataId, final String group, final String tenant, final String datumId) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? AND datum_id=?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.removeSingleAggrConfigInfo(); try { this.jt.update(sql, new PreparedStatementSetter() { @@ -597,7 +626,8 @@ public void setValues(PreparedStatement ps) throws SQLException { @Override public void removeAggrConfigInfo(final String dataId, final String group, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.removeAggrConfigInfo(); try { this.jt.update(sql, new PreparedStatementSetter() { @@ -624,9 +654,9 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St datumString.append('\'').append(datum).append("',"); } datumString.deleteCharAt(datumString.length() - 1); + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); final String sql = - "DELETE FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? AND datum_id IN (" - + datumString.toString() + ")"; + configInfoAggrMapper.batchRemoveAggr(datumList); try { jt.update(sql, dataId, group, tenantTmp); } catch (CannotGetJdbcConnectionException e) { @@ -638,28 +668,16 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St @Override public void removeConfigHistory(final Timestamp startTime, final int limitSize) { - String sql = "DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ?"; - ExternalStoragePaginationHelperImpl paginationHelper = (ExternalStoragePaginationHelperImpl) createPaginationHelper(); - int count; - try { - count = paginationHelper.updateLimitWithResponse(sql, new Object[] {startTime, limitSize}); - while (count > 0) { - try { - TimeUnit.SECONDS.sleep(1); - } catch (InterruptedException e) { - LogUtil.FATAL_LOG.error("[interrupt-error] " + e, e); - } - count = paginationHelper.updateLimitWithResponse(sql, new Object[] {startTime, limitSize}); - } - } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e, e); - throw e; - } + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sql = historyConfigInfoMapper.removeConfigHistory(); + PaginationHelper paginationHelper = createPaginationHelper(); + paginationHelper.updateLimit(sql, new Object[] {startTime, limitSize}); } @Override public int findConfigHistoryCountByTime(final Timestamp startTime) { - String sql = "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); Integer result = jt.queryForObject(sql, Integer.class, new Object[] {startTime}); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -669,7 +687,8 @@ public int findConfigHistoryCountByTime(final Timestamp startTime) { @Override public long findConfigMaxId() { - String sql = "SELECT max(id) FROM config_info"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findConfigMaxId(); try { return jt.queryForObject(sql, Long.class); } catch (NullPointerException e) { @@ -707,12 +726,13 @@ public boolean batchPublishAggr(final String dataId, final String group, final S public boolean replaceAggr(final String dataId, final String group, final String tenant, final Map datumMap, final String appName) { try { + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); Boolean isReplaceOk = tjt.execute(status -> { try { String appNameTmp = appName == null ? "" : appName; removeAggrConfigInfo(dataId, group, tenant); String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "INSERT INTO config_info_aggr(data_id, group_id, tenant_id, datum_id, app_name, content, gmt_modified) VALUES(?,?,?,?,?,?,?) "; + String sql = configInfoAggrMapper.replaceAggr(); for (Map.Entry datumEntry : datumMap.entrySet()) { jt.update(sql, dataId, group, tenantTmp, datumEntry.getKey(), appNameTmp, datumEntry.getValue(), new Timestamp(System.currentTimeMillis())); @@ -736,7 +756,8 @@ public boolean replaceAggr(final String dataId, final String group, final String @Deprecated @Override public List findAllDataIdAndGroup() { - String sql = "SELECT DISTINCT data_id, group_id FROM config_info"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findAllDataIdAndGroup(); try { return jt.query(sql, new Object[] {}, CONFIG_INFO_ROW_MAPPER); @@ -755,8 +776,8 @@ public List findAllDataIdAndGroup() { public ConfigInfoBetaWrapper findConfigInfo4Beta(final String dataId, final String group, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - return this.jt.queryForObject( - "SELECT id,data_id,group_id,tenant_id,app_name,content,beta_ips,encrypted_data_key FROM config_info_beta WHERE data_id=? AND group_id=? AND tenant_id=?", + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant. CONFIG_INFO_BETA).get(); + return this.jt.queryForObject(configInfoBetaMapper.findConfigInfo4Beta(), new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_BETA_WRAPPER_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -772,8 +793,8 @@ public ConfigInfoTagWrapper findConfigInfo4Tag(final String dataId, final String String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag.trim(); try { - return this.jt.queryForObject( - "SELECT id,data_id,group_id,tenant_id,tag_id,app_name,content FROM config_info_tag WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=?", + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + return this.jt.queryForObject(configInfoTagMapper.findConfigInfo4Tag(), new Object[] {dataId, group, tenantTmp, tagTmp}, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -788,8 +809,8 @@ public ConfigInfo findConfigInfoApp(final String dataId, final String group, fin final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - return this.jt.queryForObject( - "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=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.queryForObject(configInfoMapper.findConfigInfoApp(), new Object[] {dataId, group, tenantTmp, appName}, CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -810,32 +831,20 @@ public ConfigInfo findConfigInfoAdvanceInfo(final String dataId, final String gr paramList.add(group); paramList.add(tenantTmp); - 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=? "); + String sql = null; + Map params = new HashMap<>(16); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + params.put(APP_NAME, APP_NAME); + } if (StringUtils.isNotBlank(configTags)) { - 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 ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); - paramList.add(tagArr[i]); - } - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sql = configTagsRelationMapper.findConfigInfoAdvanceInfo(params, paramList.size()); } else { - if (StringUtils.isNotBlank(appName)) { - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sql = configInfoMapper.findConfigInfoAdvanceInfo(params); } try { @@ -852,8 +861,8 @@ public ConfigInfo findConfigInfoAdvanceInfo(final String dataId, final String gr @Override public ConfigInfoBase findConfigInfoBase(final String dataId, final String group) { try { - return this.jt.queryForObject( - "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.queryForObject(configInfoMapper.findConfigInfoBase(), new Object[] {dataId, group, StringUtils.EMPTY}, CONFIG_INFO_BASE_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -866,8 +875,9 @@ public ConfigInfoBase findConfigInfoBase(final String dataId, final String group @Override public ConfigInfo findConfigInfo(long id) { try { + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); return this.jt - .queryForObject("SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE id=?", + .queryForObject(configInfoMapper.findConfigInfoById(), new Object[] {id}, CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -881,8 +891,8 @@ public ConfigInfo findConfigInfo(long id) { public ConfigInfoWrapper findConfigInfo(final String dataId, final String group, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - return this.jt.queryForObject( - "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=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.queryForObject(configInfoMapper.findConfigInfoByDataId2Group2Tenant(), new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. return null; @@ -898,8 +908,10 @@ public Page findConfigInfoByDataId(final int pageNo, final int pageS String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByDataIdCountRows(), + configInfoMapper.findConfigInfoByDataIdFetchRows(startRow, pageSize), new Object[] {dataId, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -913,8 +925,10 @@ public Page findConfigInfoByDataIdAndApp(final int pageNo, final int String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? AND app_name=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? AND app_name=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByDataIdAndAppCountRows(), + configInfoMapper.findConfigInfoByDataIdAndAppFetchRows(startRow, pageSize), new Object[] {dataId, tenantTmp, appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -929,49 +943,30 @@ public Page findConfigInfoByDataIdAndAdvance(final int pageNo, final PaginationHelper helper = createPaginationHelper(); final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? "); + String sql = null; + String sqlCount = null; + Map paramsMap = new HashMap<>(16); List paramList = new ArrayList<>(); paramList.add(dataId); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - 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=? "); - - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByDataIdAndAdvanceCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByDataIdAndAdvanceFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByDataIdAndAdvanceCountRows(paramsMap); + sql = configInfoMapper.findConfigInfoByDataIdAndAdvanceFetchRows(paramsMap, startRow, pageSize); } try { - return helper.fetchPage(sqlCount.toString(), sql.toString(), paramList.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -986,58 +981,37 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize PaginationHelper helper = createPaginationHelper(); final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - String sqlCount = "SELECT count(*) FROM config_info"; - 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 "); + String sql = null; + String sqlCount = null; List paramList = new ArrayList<>(); paramList.add(tenantTmp); + Map paramsMap = new HashMap<>(16); + if (StringUtils.isNotBlank(dataId)) { + paramList.add(dataId); + paramsMap.put(DATA_ID, DATA_ID); + } + if (StringUtils.isNotBlank(group)) { + paramList.add(group); + paramsMap.put(GROUP, GROUP); + } + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id"; - 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=? "); - paramList.add(dataId); - } - if (StringUtils.isNotBlank(group)) { - where.append(" AND a.group_id=? "); - paramList.add(group); - } - if (StringUtils.isNotBlank(appName)) { - where.append(" AND a.app_name=? "); - paramList.add(appName); - } - - where.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - paramList.add(tagArr[i]); - } - where.append(") "); + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - where.append(" tenant_id=? "); - if (StringUtils.isNotBlank(dataId)) { - where.append(" AND data_id=? "); - paramList.add(dataId); - } - if (StringUtils.isNotBlank(group)) { - where.append(" AND group_id=? "); - paramList.add(group); - } - if (StringUtils.isNotBlank(appName)) { - where.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); + sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); } try { - Page page = helper.fetchPage(sqlCount + where, sql + where, paramList.toArray(), pageNo, + Page page = helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), @@ -1055,8 +1029,10 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize public Page findConfigInfoBaseByDataId(final int pageNo, final int pageSize, final String dataId) { PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE data_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoBaseByDataIdCountRows(), + configInfoMapper.findConfigInfoBaseByDataIdFetchRows(startRow, pageSize), new Object[] {dataId, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1070,8 +1046,10 @@ public Page findConfigInfoByGroup(final int pageNo, final int pageSi String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByGroupCountRows(), + configInfoMapper.findConfigInfoByGroupFetchRows(startRow, pageSize), new Object[] {group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1085,8 +1063,10 @@ public Page findConfigInfoByGroupAndApp(final int pageNo, final int String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? AND app_name =?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByGroupAndAppCountRows(), + configInfoMapper.findConfigInfoByGroupAndAppFetchRows(startRow, pageSize), new Object[] {group, tenantTmp, appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1102,50 +1082,32 @@ public Page findConfigInfoByGroupAndAdvance(final int pageNo, final final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder( - "SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? "); + String sqlCount = null; + String sql = null; + Map params = new HashMap<>(16); + List paramList = new ArrayList<>(); paramList.add(group); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + params.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - 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=? "); - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByGroupAndAdvanceCountRows(params, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByGroupAndAdvanceFetchRows(params, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByGroupAndAdvanceCountRows(params); + sql = configInfoMapper.findConfigInfoByGroupAndAdvanceFetchRows(params, startRow, pageSize); } - + try { - return helper.fetchPage(sqlCount.toString(), sql.toString(), paramList.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1159,8 +1121,10 @@ public Page findConfigInfoByApp(final int pageNo, final int pageSize String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name=?", - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), + configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1175,49 +1139,32 @@ public Page findConfigInfoByAdvance(final int pageNo, final int page PaginationHelper helper = createPaginationHelper(); final String appName = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("appName"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); - StringBuilder sqlCount = new StringBuilder("SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); - StringBuilder sql = new StringBuilder( - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? "); + + String sqlCount = null; + String sql = null; + Map paramsMap = new HashMap<>(16); + List paramList = new ArrayList<>(); paramList.add(tenantTmp); + if (StringUtils.isNotBlank(appName)) { + paramList.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCount = new StringBuilder( - "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? "); - - 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=? "); - - sqlCount.append(" AND b.tag_name IN ("); - sql.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sqlCount.append(", "); - sql.append(", "); - } - sqlCount.append('?'); - sql.append('?'); - paramList.add(tagArr[i]); - } - sqlCount.append(") "); - sql.append(") "); - - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND a.app_name=? "); - sql.append(" AND a.app_name=? "); - paramList.add(appName); - } + paramList.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCount = configTagsRelationMapper.findConfigInfoByAdvanceCountRows(paramsMap, paramList.size()); + sql = configTagsRelationMapper.findConfigInfoByAdvanceFetchRows(paramsMap, paramList.size(), startRow, pageSize); } else { - if (StringUtils.isNotBlank(appName)) { - sqlCount.append(" AND app_name=? "); - sql.append(" AND app_name=? "); - paramList.add(appName); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCount = configInfoMapper.findConfigInfoByAdvanceCountRows(paramsMap); + sql = configInfoMapper.findConfigInfoByAdvanceFetchRows(paramsMap, startRow, pageSize); } try { - return helper.fetchPage(sqlCount.toString(), sql.toString(), paramList.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1230,8 +1177,10 @@ public Page findConfigInfoByAdvance(final int pageNo, final int page public Page findConfigInfoBaseByGroup(final int pageNo, final int pageSize, final String group) { PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage("SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id=?", - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?", + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return helper.fetchPage(configInfoMapper.findConfigInfoBaseByGroupCountRows(), + configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1241,7 +1190,8 @@ public Page findConfigInfoBaseByGroup(final int pageNo, final in @Override public int configInfoCount() { - String sql = " SELECT count(*) FROM config_info "; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.count(); Integer result = jt.queryForObject(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); @@ -1251,7 +1201,8 @@ public int configInfoCount() { @Override public int configInfoCount(String tenant) { - String sql = " SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.configInfoLikeTenantCount(); Integer result = jt.queryForObject(sql, new Object[] {tenant}, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); @@ -1261,7 +1212,8 @@ public int configInfoCount(String tenant) { @Override public int configInfoBetaCount() { - String sql = " SELECT count(*) FROM config_info_beta "; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + String sql = configInfoBetaMapper.count(); Integer result = jt.queryForObject(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -1271,7 +1223,8 @@ public int configInfoBetaCount() { @Override public int configInfoTagCount() { - String sql = " SELECT count(ID) FROM config_info_tag "; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + String sql = configInfoTagMapper.configInfoTagCount(); Integer result = jt.queryForObject(sql, Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); @@ -1281,14 +1234,16 @@ public int configInfoTagCount() { @Override public List getTenantIdList(int page, int pageSize) { - String sql = "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id LIMIT ?, ?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.getTenantIdList(); int from = (page - 1) * pageSize; return jt.queryForList(sql, String.class, from, pageSize); } @Override public List getGroupIdList(int page, int pageSize) { - String sql = "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT ?, ?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.getGroupIdList(); int from = (page - 1) * pageSize; return jt.queryForList(sql, String.class, from, pageSize); } @@ -1296,7 +1251,8 @@ public List getGroupIdList(int page, int pageSize) { @Override public int aggrConfigInfoCount(String dataId, String group, String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = " SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.aggrConfigInfoCount(); Integer result = jt.queryForObject(sql, Integer.class, new Object[] {dataId, group, tenantTmp}); if (result == null) { throw new IllegalArgumentException("aggrConfigInfoCount error"); @@ -1310,24 +1266,11 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< return 0; } final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - 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(')'); - + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.aggrConfigInfoCount(datumIds, isIn); List objectList = com.alibaba.nacos.common.utils.CollectionUtils.list(dataId, group, tenantTmp); objectList.addAll(datumIds); - Integer result = jt.queryForObject(sql.toString(), Integer.class, objectList.toArray()); + Integer result = jt.queryForObject(sql, Integer.class, objectList.toArray()); if (result == null) { throw new IllegalArgumentException("aggrConfigInfoCount error"); } @@ -1347,10 +1290,10 @@ public int aggrConfigInfoCountNotIn(String dataId, String group, String tenant, @Override public Page findAllConfigInfo(final int pageNo, final int pageSize, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = " 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 "; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { @@ -1366,9 +1309,8 @@ public Page findAllConfigInfo(final int pageNo, final int pageSize, @Override public Page findAllConfigKey(final int pageNo, final int pageSize, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String select = " 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 "; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String select = configInfoMapper.findAllConfigKey(); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -1406,10 +1348,10 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi @Override @Deprecated public Page findAllConfigInfoBase(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = " SELECT t.id,data_id,group_id,content,md5" - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) " - + " g, config_info t WHERE g.id = t.id "; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { @@ -1423,10 +1365,10 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa @Override public Page findAllConfigInfoForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = " SELECT t.id,type,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? )" - + " g, config_info t WHERE g.id = t.id "; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.findAllConfigInfoForDumpAllFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { @@ -1440,7 +1382,8 @@ public Page findAllConfigInfoForDumpAll(final int pageNo, fin @Override public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { - String select = "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC LIMIT ?,?"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String select = configInfoMapper.findAllConfigInfoFragment(); PaginationHelper helper = createPaginationHelper(); try { return helper.fetchPageLimit(select, new Object[] {lastMaxId, 0, pageSize}, 1, pageSize, @@ -1453,11 +1396,11 @@ public Page findAllConfigInfoFragment(final long lastMaxId, f @Override public Page findAllConfigInfoBetaForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info_beta"; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoBetaMapper configInfoBetaMapper = (ConfigInfoBetaMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_BETA).get(); + String sqlCountRows = configInfoBetaMapper.count(); String sqlFetchRows = - " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips,encrypted_data_key " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? )" - + " g, config_info_beta t WHERE g.id = t.id "; + configInfoBetaMapper.findAllConfigInfoBetaForDumpAllFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, @@ -1471,10 +1414,10 @@ public Page findAllConfigInfoBetaForDumpAll(final int pag @Override public Page findAllConfigInfoTagForDumpAll(final int pageNo, final int pageSize) { - String sqlCountRows = "SELECT count(*) FROM config_info_tag"; - String sqlFetchRows = " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,? ) " - + "g, config_info_tag t WHERE g.id = t.id "; + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + String sqlCountRows = configInfoTagMapper.count(); + String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, @@ -1495,37 +1438,27 @@ public List findConfigInfoByBatch(final List dataIds, final if (CollectionUtils.isEmpty(dataIds)) { return Collections.emptyList(); } - + // Batch query limit // The number of in is controlled within 100, the shorter the length of the SQL statement, the better if (subQueryLimit > QUERY_LIMIT_SIZE) { subQueryLimit = 50; } List result = new ArrayList<>(dataIds.size()); - - 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(); - + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); 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(','); - } - } - + // group params.add(0, group); params.add(1, tenantTmp); - + List r = this.jt - .query(sqlStart + subQuerySql.toString() + sqlEnd, params.toArray(), CONFIG_INFO_ROW_MAPPER); - + .query(configInfoMapper.findConfigInfoByBatch(params.size()), params.toArray(), CONFIG_INFO_ROW_MAPPER); + // assert not null if (r != null && r.size() > 0) { result.addAll(r); @@ -1538,6 +1471,8 @@ public List findConfigInfoByBatch(final List dataIds, final public Page findConfigInfoLike(final int pageNo, final int pageSize, final String dataId, final String group, final String tenant, final String appName, final String content) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; + Map paramsMap = new HashMap<>(16); + List params = new ArrayList<>(); if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { if (StringUtils.isBlank(appName)) { return this.findAllConfigInfo(pageNo, pageSize, tenantTmp); @@ -1545,37 +1480,34 @@ public Page findConfigInfoLike(final int pageNo, final int pageSize, return this.findConfigInfoByApp(pageNo, pageSize, tenantTmp, appName); } } - - PaginationHelper helper = createPaginationHelper(); - - String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE "; - String where = " 1=1 "; - List params = new ArrayList<>(); - if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; + paramsMap.put(DATA_ID, DATA_ID); params.add(generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE ? "; + paramsMap.put(GROUP, GROUP); params.add(generateLikeArgument(group)); } - - where += " AND tenant_id LIKE ? "; + params.add(generateLikeArgument(tenantTmp)); - + if (!StringUtils.isBlank(appName)) { - where += " AND app_name = ? "; + paramsMap.put(APP_NAME, APP_NAME); params.add(appName); } if (!StringUtils.isBlank(content)) { - where += " AND content LIKE ? "; + paramsMap.put(CONTENT, CONTENT); params.add(generateLikeArgument(content)); } + PaginationHelper helper = createPaginationHelper(); + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoMapper.findConfigInfoLikeCountRows(paramsMap); + String sqlFetchRows = configInfoMapper.findConfigInfoLikeFetchRows(paramsMap, startRow, pageSize); try { - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1690,67 +1622,45 @@ public Page findConfigInfoLike4Page(final int pageNo, final int page final String content = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("content"); final String configTags = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("config_tags"); PaginationHelper helper = createPaginationHelper(); - String sqlCountRows = "SELECT count(*) FROM config_info"; - String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; - StringBuilder where = new StringBuilder(" WHERE "); + String sqlCountRows = null; + String sqlFetchRows = null; + Map paramsMap = new HashMap<>(16); + List params = new ArrayList<>(); params.add(generateLikeArgument(tenantTmp)); + if (!StringUtils.isBlank(dataId)) { + params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); + } + if (!StringUtils.isBlank(group)) { + params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); + } + if (!StringUtils.isBlank(appName)) { + params.add(appName); + paramsMap.put(APP_NAME, APP_NAME); + } + if (!StringUtils.isBlank(content)) { + params.add(generateLikeArgument(content)); + paramsMap.put(CONTENT, CONTENT); + } + final int startRow = (pageNo - 1) * pageSize; if (StringUtils.isNotBlank(configTags)) { - sqlCountRows = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; - 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 ? "); - params.add(generateLikeArgument(dataId)); - } - if (!StringUtils.isBlank(group)) { - where.append(" AND a.group_id LIKE ? "); - params.add(generateLikeArgument(group)); - } - if (!StringUtils.isBlank(appName)) { - where.append(" AND a.app_name = ? "); - params.add(appName); - } - if (!StringUtils.isBlank(content)) { - where.append(" AND a.content LIKE ? "); - params.add(generateLikeArgument(content)); - } - - where.append(" AND b.tag_name IN ("); String[] tagArr = configTags.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - params.add(tagArr[i]); - } - where.append(") "); + params.addAll(Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, params.size()); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(paramsMap, params.size(), startRow, pageSize); } else { - where.append(" tenant_id LIKE ? "); - if (!StringUtils.isBlank(dataId)) { - where.append(" AND data_id LIKE ? "); - params.add(generateLikeArgument(dataId)); - } - if (!StringUtils.isBlank(group)) { - where.append(" AND group_id LIKE ? "); - params.add(generateLikeArgument(group)); - } - if (!StringUtils.isBlank(appName)) { - where.append(" AND app_name = ? "); - params.add(appName); - } - if (!StringUtils.isBlank(content)) { - where.append(" AND content LIKE ? "); - params.add(generateLikeArgument(content)); - } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); } - + try { - Page page = helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), + Page page = helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); - + for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), configInfo.getEncryptedDataKey(), configInfo.getContent()); @@ -1769,29 +1679,31 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } - + PaginationHelper helper = createPaginationHelper(); - - String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; - String where = " 1=1 AND tenant_id='' "; + Map paramsMap = new HashMap<>(16); List params = new ArrayList<>(); - + if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE "; params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); } if (!StringUtils.isBlank(content)) { - where += " AND content LIKE ? "; params.add(generateLikeArgument(content)); + paramsMap.put(CONTENT, CONTENT); } - + + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); + String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); + try { - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1802,7 +1714,8 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p @Override public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, String tenant, String datumId) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "SELECT id,data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? AND datum_id=?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findSingleConfigInfoAggr(); try { return this.jt @@ -1822,7 +1735,8 @@ public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, Stri @Override public List findConfigInfoAggr(String dataId, String group, String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sql = "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND group_id=? AND tenant_id=? ORDER BY datum_id"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findConfigInfoAggr(); try { return this.jt.query(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_AGGR_ROW_MAPPER); @@ -1841,16 +1755,16 @@ public List findConfigInfoAggr(String dataId, String group, Stri public Page findConfigInfoAggrByPage(String dataId, String group, String tenant, final int pageNo, final int pageSize) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; - String sqlFetchRows = - "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND " - + "group_id=? AND tenant_id=? ORDER BY datum_id LIMIT ?,?"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + final int startRow = (pageNo - 1) * pageSize; + String sqlCountRows = configInfoAggrMapper.findConfigInfoAggrByPageCountRows(); + String sqlFetchRows = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(startRow, pageSize); PaginationHelper helper = createPaginationHelper(); try { return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, new Object[] {dataId, group, tenantTmp, (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); - + } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1960,7 +1874,8 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p @Override public List findAllAggrGroup() { - String sql = "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findAllAggrGroup(); try { return jt.query(sql, new Object[] {}, CONFIG_INFO_CHANGED_ROW_MAPPER); @@ -1977,7 +1892,8 @@ public List findAllAggrGroup() { @Override public List findDatumIdByContent(String dataId, String groupId, String content) { - String sql = "SELECT datum_id FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND content = ? "; + ConfigInfoAggrMapper configInfoAggrMapper = (ConfigInfoAggrMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_AGGR).get(); + String sql = configInfoAggrMapper.findDatumIdByContent(); try { return this.jt.queryForList(sql, new Object[] {dataId, groupId, content}, String.class); @@ -1994,8 +1910,8 @@ public List findDatumIdByContent(String dataId, String groupId, String c @Override public List findChangeConfig(final Timestamp startTime, final Timestamp endTime) { try { - List> list = jt.queryForList( - "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified,encrypted_data_key FROM config_info WHERE gmt_modified >=? AND gmt_modified <= ?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + List> list = jt.queryForList(configInfoMapper.findChangeConfig(), new Object[] {startTime, endTime}); return convertChangeConfig(list); } catch (DataAccessException e) { @@ -2009,41 +1925,40 @@ public Page findChangeConfig(final String dataId, final Strin final String appName, final Timestamp startTime, final Timestamp endTime, final int pageNo, final int pageSize, final long lastMaxId) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info WHERE "; - String where = " 1=1 "; + Map paramsMap = new HashMap<>(16); List params = new ArrayList<>(); - if (!StringUtils.isBlank(dataId)) { - where += " AND data_id LIKE ? "; params.add(generateLikeArgument(dataId)); + paramsMap.put(DATA_ID, DATA_ID); } if (!StringUtils.isBlank(group)) { - where += " AND group_id LIKE ? "; params.add(generateLikeArgument(group)); + paramsMap.put(GROUP, GROUP); } - + if (!StringUtils.isBlank(tenantTmp)) { - where += " AND tenant_id = ? "; params.add(tenantTmp); + paramsMap.put(TENANT, TENANT); } - + if (!StringUtils.isBlank(appName)) { - where += " AND app_name = ? "; params.add(appName); + paramsMap.put(APP_NAME, APP_NAME); } if (startTime != null) { - where += " AND gmt_modified >=? "; params.add(startTime); } if (endTime != null) { - where += " AND gmt_modified <=? "; params.add(endTime); } - + final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); + String sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, pageSize, lastMaxId); + PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage(sqlCountRows + where, sqlFetchRows + where, params.toArray(), pageNo, pageSize, + return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -2054,8 +1969,8 @@ public Page findChangeConfig(final String dataId, final Strin @Override public List findDeletedConfig(final Timestamp startTime, final Timestamp endTime) { try { - List> list = jt.queryForList( - "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND gmt_modified >=? AND gmt_modified <= ?", + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + List> list = jt.queryForList(historyConfigInfoMapper.findDeletedConfig(), new Object[] {startTime, endTime}); return convertDeletedConfig(list); } catch (DataAccessException e) { @@ -2083,10 +1998,9 @@ public long addConfigInfoAtomic(final long configId, final String srcIp, final S final String md5Tmp = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); KeyHolder keyHolder = new GeneratedKeyHolder(); - - final String sql = - "INSERT INTO config_info(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(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + final String sql = configInfoMapper.addConfigInfoAtomic(); try { jt.update(new PreparedStatementCreator() { @@ -2136,8 +2050,8 @@ public void addConfigTagsRelation(long configId, String configTags, String dataI @Override public void addConfigTagRelationAtomic(long configId, String tagName, String dataId, String group, String tenant) { try { - jt.update( - "INSERT INTO config_tags_relation(id,tag_name,tag_type,data_id,group_id,tenant_id) VALUES(?,?,?,?,?,?)", + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + jt.update(configTagsRelationMapper.addConfigTagRelationAtomic(), configId, tagName, StringUtils.EMPTY, dataId, group, tenant); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -2148,7 +2062,8 @@ public void addConfigTagRelationAtomic(long configId, String tagName, String dat @Override public void removeTagByIdAtomic(long id) { try { - jt.update("DELETE FROM config_tags_relation WHERE id=?", id); + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + jt.update(configTagsRelationMapper.removeTagByIdAtomic(), id); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -2157,7 +2072,8 @@ public void removeTagByIdAtomic(long id) { @Override public List getConfigTagsByTenant(String tenant) { - String sql = "SELECT tag_name FROM config_tags_relation WHERE tenant_id = ? "; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + String sql = configTagsRelationMapper.getConfigTagsByTenant(); try { return jt.queryForList(sql, new Object[] {tenant}, String.class); } catch (EmptyResultDataAccessException e) { @@ -2172,7 +2088,8 @@ public List getConfigTagsByTenant(String tenant) { @Override public List selectTagByConfig(String dataId, String group, String tenant) { - String sql = "SELECT tag_name FROM config_tags_relation WHERE data_id=? AND group_id=? AND tenant_id = ? "; + ConfigTagsRelationMapper configTagsRelationMapper = (ConfigTagsRelationMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_TAGS_RELATION).get(); + String sql = configTagsRelationMapper.selectTagByConfig(); try { return jt.queryForList(sql, new Object[] {dataId, group, tenant}, String.class); } catch (EmptyResultDataAccessException e) { @@ -2190,7 +2107,8 @@ public void removeConfigInfoAtomic(final String dataId, final String group, fina final String srcUser) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - jt.update("DELETE FROM config_info WHERE data_id=? AND group_id=? AND tenant_id=?", dataId, group, + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + jt.update(configInfoMapper.removeConfigInfoAtomic(), dataId, group, tenantTmp); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -2203,20 +2121,15 @@ public void removeConfigInfoByIdsAtomic(final String ids) { if (StringUtils.isBlank(ids)) { return; } - StringBuilder sql = new StringBuilder(SQL_DELETE_CONFIG_INFO_BY_IDS); - sql.append("id IN ("); List paramList = new ArrayList<>(); String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); - paramList.add(Long.parseLong(tagArr[i])); + for (String s : tagArr) { + paramList.add(Long.parseLong(s)); } - sql.append(") "); + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); try { - jt.update(sql.toString(), paramList.toArray()); + jt.update(sql, paramList.toArray()); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -2229,7 +2142,8 @@ public void removeConfigInfoTag(final String dataId, final String group, final S String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; String tagTmp = StringUtils.isBlank(tag) ? StringUtils.EMPTY : tag; try { - jt.update("DELETE FROM config_info_tag WHERE data_id=? AND group_id=? AND tenant_id=? AND tag_id=?", dataId, + ConfigInfoTagMapper configInfoTagMapper = (ConfigInfoTagMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO_TAG).get(); + jt.update(configInfoTagMapper.removeConfigInfoTag(), dataId, group, tenantTmp, tagTmp); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -2252,9 +2166,8 @@ public void updateConfigInfoAtomic(final ConfigInfo configInfo, final String src configInfo.getEncryptedDataKey() == null ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); try { - jt.update("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=?", configInfo.getContent(), md5Tmp, srcIp, srcUser, + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + jt.update(configInfoMapper.updateConfigInfoAtomic(), configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp); } catch (CannotGetJdbcConnectionException e) { @@ -2275,9 +2188,8 @@ private int updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String String schema = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("schema"); try { - return jt.update("UPDATE config_info SET content=?, md5 = ?, src_ip=?,src_user=?,gmt_modified=?," - + "app_name=?,c_desc=?,c_use=?,effect=?,type=?,c_schema=? " - + "WHERE data_id=? AND group_id=? AND tenant_id=? AND (md5=? OR md5 IS NULL OR md5='')", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return jt.update(configInfoMapper.updateConfigInfoAtomic(), configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, configInfo.getMd5()); } catch (CannotGetJdbcConnectionException e) { @@ -2291,20 +2203,14 @@ public List findConfigInfosByIds(final String ids) { if (StringUtils.isBlank(ids)) { return null; } - StringBuilder sql = new StringBuilder(SQL_FIND_CONFIG_INFO_BY_IDS); - sql.append("id IN ("); List paramList = new ArrayList<>(); String[] tagArr = ids.split(","); for (int i = 0; i < tagArr.length; i++) { - if (i != 0) { - sql.append(", "); - } - sql.append('?'); paramList.add(Long.parseLong(tagArr[i])); } - sql.append(") "); try { - return this.jt.query(sql.toString(), paramList.toArray(), CONFIG_INFO_ROW_MAPPER); + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.query(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null return null; } catch (CannotGetJdbcConnectionException e) { @@ -2318,8 +2224,8 @@ public ConfigAdvanceInfo findConfigAdvanceInfo(final String dataId, final String final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { List configTagList = this.selectTagByConfig(dataId, group, tenant); - ConfigAdvanceInfo configAdvance = this.jt.queryForObject( - "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=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + ConfigAdvanceInfo configAdvance = this.jt.queryForObject(configInfoMapper.findConfigAdvanceInfo(), new Object[] {dataId, group, tenantTmp}, CONFIG_ADVANCE_INFO_ROW_MAPPER); if (configTagList != null && !configTagList.isEmpty()) { StringBuilder configTagsTmp = new StringBuilder(); @@ -2346,10 +2252,8 @@ public ConfigAllInfo findConfigAllInfo(final String dataId, final String group, final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { List configTagList = this.selectTagByConfig(dataId, group, tenant); - ConfigAllInfo configAdvance = this.jt.queryForObject( - "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=?", new Object[] {dataId, group, tenantTmp}, + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + ConfigAllInfo configAdvance = this.jt.queryForObject(configInfoMapper.findConfigAllInfo(), new Object[] {dataId, group, tenantTmp}, CONFIG_ALL_INFO_ROW_MAPPER); if (configTagList != null && !configTagList.isEmpty()) { StringBuilder configTagsTmp = new StringBuilder(); @@ -2381,9 +2285,9 @@ public void insertConfigHistoryAtomic(long id, ConfigInfo configInfo, String src : configInfo.getEncryptedDataKey(); try { + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); jt.update( - "INSERT INTO his_config_info (id,data_id,group_id,tenant_id,app_name,content,md5,src_ip,src_user,gmt_modified,op_type,encrypted_data_key) " - + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)", id, configInfo.getDataId(), configInfo.getGroup(), + historyConfigInfoMapper.insertConfigHistoryAtomic(), id, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, ops, encryptedDataKey); } catch (DataAccessException e) { @@ -2397,10 +2301,10 @@ public Page findConfigHistory(String dataId, String group, St int pageSize) { PaginationHelper helper = createPaginationHelper(); String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - String sqlCountRows = "SELECT count(*) FROM his_config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ?"; - String sqlFetchRows = - "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " - + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC"; + final int startRow = (pageNo - 1) * pageSize; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlCountRows = historyConfigInfoMapper.findConfigHistoryCountRows(); + String sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(startRow, pageSize); Page page = null; try { @@ -2445,7 +2349,8 @@ public void updateConfigSubAtomic(final String dataId, final String group, final @Override public ConfigHistoryInfo detailConfigHistory(Long nid) { - String sqlFetchRows = "SELECT nid,data_id,group_id,tenant_id,app_name,content,md5,src_user,src_ip,op_type,gmt_create,gmt_modified,encrypted_data_key FROM his_config_info WHERE nid = ?"; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlFetchRows = historyConfigInfoMapper.detailConfigHistory(); try { ConfigHistoryInfo historyInfo = jt .queryForObject(sqlFetchRows, new Object[] {nid}, HISTORY_DETAIL_ROW_MAPPER); @@ -2458,7 +2363,8 @@ public ConfigHistoryInfo detailConfigHistory(Long nid) { @Override public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { - String sqlFetchRows = "SELECT nid,data_id,group_id,tenant_id,app_name,content,md5,src_user,src_ip,op_type,gmt_create,gmt_modified FROM his_config_info WHERE nid = (SELECT max(nid) FROM his_config_info WHERE id = ?) "; + HistoryConfigInfoMapper historyConfigInfoMapper = (HistoryConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.HIS_CONFIG_INFO).get(); + String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); try { ConfigHistoryInfo historyInfo = jt .queryForObject(sqlFetchRows, new Object[] {id}, HISTORY_DETAIL_ROW_MAPPER); @@ -2587,10 +2493,9 @@ public List listAllGroupKeyMd5() { @Override public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { - String sqlCountRows = " SELECT count(*) FROM config_info "; - String sqlFetchRows = - " 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"; + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sqlCountRows = configInfoMapper.count(); + String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows(); PaginationHelper helper = createPaginationHelper(); try { Page page = helper @@ -2619,9 +2524,8 @@ public String generateLikeArgument(String s) { public ConfigInfoWrapper queryConfigInfo(final String dataId, final String group, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - return this.jt.queryForObject( - "SELECT id,data_id,group_id,tenant_id,app_name,content,type,gmt_modified,md5,encrypted_data_key FROM config_info " - + "WHERE data_id=? AND group_id=? AND tenant_id=?", new Object[] {dataId, group, tenantTmp}, + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.queryForObject(configInfoMapper.queryConfigInfo(), new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { return null; @@ -2689,36 +2593,29 @@ public Boolean completeMd5() { public List findAllConfigInfo4Export(final String dataId, final String group, final String tenant, final String appName, final List ids) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - StringBuilder where = new StringBuilder(" WHERE "); + Map params = new HashMap<>(16); List paramList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ids)) { - where.append(" id IN ("); - for (int i = 0; i < ids.size(); i++) { - if (i != 0) { - where.append(", "); - } - where.append('?'); - paramList.add(ids.get(i)); - } - where.append(") "); + paramList.addAll(ids); } else { - where.append(" tenant_id=? "); paramList.add(tenantTmp); if (!StringUtils.isBlank(dataId)) { - where.append(" AND data_id LIKE ? "); paramList.add(generateLikeArgument(dataId)); + params.put(DATA_ID, DATA_ID); } if (StringUtils.isNotBlank(group)) { - where.append(" AND group_id=? "); paramList.add(group); + params.put(GROUP, GROUP); } if (StringUtils.isNotBlank(appName)) { - where.append(" AND app_name=? "); paramList.add(appName); + params.put(APP_NAME, APP_NAME); } } + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); try { - return this.jt.query(SQL_FIND_ALL_CONFIG_INFO + where, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); + return this.jt.query(sql, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -2831,8 +2728,8 @@ public List queryConfigInfoByNamespace(String tenant) { } String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; try { - return this.jt.query( - "SELECT data_id,group_id,tenant_id,app_name,type FROM config_info WHERE tenant_id=?", + ConfigInfoMapper configInfoMapper = (ConfigInfoMapper) mapperManager.findMapper(dataSource, TableConstant.CONFIG_INFO).get(); + return this.jt.query(configInfoMapper.queryConfigInfoByNamespace(), new Object[]{tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null. diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/MapperManager.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/MapperManager.java similarity index 61% rename from plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/MapperManager.java rename to plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/MapperManager.java index e5df4ac7cd0..870985a2d29 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/MapperManager.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/MapperManager.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.alibaba.nacos.plugin.datasource.manager; +package com.alibaba.nacos.plugin.datasource; import com.alibaba.nacos.common.spi.NacosServiceLoader; import com.alibaba.nacos.plugin.datasource.mapper.Mapper; @@ -33,13 +33,17 @@ * @author hyx **/ -public class MapperManager implements InitAndClosable { +public class MapperManager { private static final Logger LOGGER = LoggerFactory.getLogger(MapperManager.class); + public static final Map> MAPPER_SPI_MAP = new HashMap<>(); + private static final MapperManager INSTANCE = new MapperManager(); - private MapperManager() {} + private MapperManager() { + loadInitial(); + } /** * Get the instance of MapperManager. @@ -49,15 +53,17 @@ public static MapperManager instance() { return INSTANCE; } - private static final Map MAPPER_SPI_MAP = new HashMap<>(); - - @Override + /** + * The init method. + */ public void loadInitial() { Collection mappers = NacosServiceLoader.load(Mapper.class); for (Mapper mapper : mappers) { - MAPPER_SPI_MAP.put(mapper.getTableName(), mapper); - LOGGER.info("[MapperManager] Load Mapper({}) tableName({}) successfully.", - mapper.getClass(), mapper.getTableName()); + Map mapperMap = MAPPER_SPI_MAP.getOrDefault(mapper.getDataSource(), new HashMap<>(16)); + mapperMap.put(mapper.getTableName(), mapper); + MAPPER_SPI_MAP.put(mapper.getDataSource(), mapperMap); + LOGGER.info("[MapperManager] Load Mapper({}) datasource({}) tableName({}) successfully.", + mapper.getClass(), mapper.getDataSource(), mapper.getTableName()); } } @@ -69,21 +75,20 @@ public static synchronized void join(Mapper mapper) { if (Objects.isNull(mapper)) { return; } - MAPPER_SPI_MAP.put(mapper.getTableName(), mapper); + Map mapperMap = MAPPER_SPI_MAP.getOrDefault(mapper.getDataSource(), new HashMap<>(16)); + mapperMap.put(mapper.getTableName(), mapper); + MAPPER_SPI_MAP.put(mapper.getDataSource(), mapperMap); LOGGER.warn("[MapperManager] join successfully."); } - @Override - public boolean close() { - return false; - } - /** * Get the mapper by table name. * @param tableName table name. + * @param dataSource the datasource. * @return mapper. */ - public Optional findMapper(String tableName) { - return Optional.ofNullable(MAPPER_SPI_MAP.get(tableName)); + public Optional findMapper(String dataSource, String tableName) { + LOGGER.info("[findMapper] dataSource: {}, tableName: {}", dataSource, tableName); + return Optional.ofNullable(MAPPER_SPI_MAP.get(dataSource).get(tableName)); } } \ No newline at end of file diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/InitAndClosable.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/DataSourceConstant.java similarity index 70% rename from plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/InitAndClosable.java rename to plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/DataSourceConstant.java index 10fe58b1a49..b197c16a265 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/InitAndClosable.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/DataSourceConstant.java @@ -14,24 +14,16 @@ * limitations under the License. */ -package com.alibaba.nacos.plugin.datasource.manager; +package com.alibaba.nacos.plugin.datasource.constants; /** - * init and close interface. + * The data source name. * * @author hyx **/ -public interface InitAndClosable { +public class DataSourceConstant { + public static final String MYSQL = "mysql"; - /** - * load and initial. - */ - void loadInitial(); - - /** - * close all resource. - * @return result. - */ - boolean close(); + public static final String DERBY = "derby"; } 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 d76b175e694..f4ee1bf955a 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 @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; @@ -114,9 +115,9 @@ public String findConfigInfoAggrByPageCountRows() { } @Override - public String findConfigInfoAggrByPageFetchRows() { + public String findConfigInfoAggrByPageFetchRows(int startRow, int pageSize) { return "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND " - + "group_id=? AND tenant_id=? ORDER BY datum_id LIMIT ?,?"; + + "group_id=? AND tenant_id=? ORDER BY datum_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @Override @@ -133,4 +134,9 @@ public String findDatumIdByContent() { public String getTableName() { return TableConstant.CONFIG_INFO_AGGR; } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; + } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java index 47a2c643cbe..6fd210e2c2a 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerby.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; @@ -62,9 +63,9 @@ public String count() { } @Override - public String findAllConfigInfoBetaForDumpAllFetchRows() { + public String findAllConfigInfoBetaForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips " - + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? )" + + " FROM ( SELECT id FROM config_info_beta ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY )" + " g, config_info_beta t WHERE g.id = t.id "; } @@ -72,4 +73,9 @@ public String findAllConfigInfoBetaForDumpAllFetchRows() { public String getTableName() { return TableConstant.CONFIG_INFO_BETA; } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; + } } 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 77578282786..346a818d4df 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 @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; @@ -41,6 +42,8 @@ public class ConfigInfoMapperByDerby implements ConfigInfoMapper { private static final String CONTENT = "content"; + private static final String TENANT = "tenant"; + @Override public String updateMd5() { return "UPDATE config_info SET md5 = ? WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND gmt_modified = ?"; @@ -73,9 +76,9 @@ public String findConfigInfoById() { } @Override - public String findConfigInfoByDataIdFetchRows() { + public String findConfigInfoByDataIdFetchRows(int startRow, int pageSize) { return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? AND " - + "tenant_id = ?"; + + "tenant_id = ?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -84,9 +87,9 @@ public String findConfigInfoByDataIdAndAppCountRows() { } @Override - public String findConfigInfoByDataIdAndAppFetchRows() { + public String findConfigInfoByDataIdAndAppFetchRows(int startRow, int pageSize) { return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id = ? AND " - + "tenant_id = ? AND app_name = ?"; + + "tenant_id = ? AND app_name = ?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -100,9 +103,9 @@ public String findConfigInfoByAppCountRows() { } @Override - public String findConfigInfoByAppFetchRows() { + public String findConfigInfoByAppFetchRows(int startRow, int pageSize) { return "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND " - + "app_name = ?"; + + "app_name = ?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -112,39 +115,39 @@ public String configInfoLikeTenantCount() { @Override public String getTenantIdList() { - return "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id LIMIT ?,?"; + return "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @Override public String getGroupIdList() { - return "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT ?,?"; + return "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @Override public String findAllConfigKey() { return " SELECT data_id,group_id,app_name FROM " - + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?, ? ) " + + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ) " + "g, config_info t WHERE g.id = t.id "; } @Override - public String findAllConfigInfoBaseFetchRows() { + public String findAllConfigInfoBaseFetchRows(int startRow, int pageSize) { return "SELECT t.id,data_id,group_id,content,md5 " - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) " + + " FROM ( SELECT id FROM config_info ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ) " + " g, config_info t WHERE g.id = t.id "; } @Override - public String findAllConfigInfoForDumpAllFetchRows() { + public String findAllConfigInfoForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? )" + + " FROM ( SELECT id FROM config_info ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY)" + " g, config_info t WHERE g.id = t.id "; } @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 > ? " - + "ORDER BY id ASC LIMIT ?,?"; + + "ORDER BY id ASC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } @Override @@ -156,15 +159,69 @@ public String findChangeConfig() { @Override 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 <= ?"; + final String tenant = params.get(TENANT); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String appName = params.get(APP_NAME); + final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; + String where = " 1=1 "; + + if (!StringUtils.isBlank(dataId)) { + where += " AND data_id LIKE ? "; + } + if (!StringUtils.isBlank(group)) { + where += " AND group_id LIKE ? "; + } + + if (!StringUtils.isBlank(tenant)) { + where += " AND tenant_id = ? "; + } + + if (!StringUtils.isBlank(appName)) { + where += " AND app_name = ? "; + } + if (startTime != null) { + where += " AND gmt_modified >=? "; + } + if (endTime != null) { + where += " AND gmt_modified <=? "; + } + return sqlCountRows + where; } @Override - 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 <= ?"; + public String findChangeConfigFetchRows( + Map params, final Timestamp startTime, final Timestamp endTime, + int startRow, int pageSize, long lastMaxId) { + final String tenant = params.get(TENANT); + final String dataId = params.get(DATA_ID); + final String group = params.get(GROUP); + final String appName = params.get(APP_NAME); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM" + + " config_info WHERE "; + String where = " 1=1 "; + + if (!StringUtils.isBlank(dataId)) { + where += " AND data_id LIKE ? "; + } + if (!StringUtils.isBlank(group)) { + where += " AND group_id LIKE ? "; + } + + if (!StringUtils.isBlank(tenant)) { + where += " AND tenant_id = ? "; + } + + if (!StringUtils.isBlank(appName)) { + where += " AND app_name = ? "; + } + if (startTime != null) { + where += " AND gmt_modified >=? "; + } + if (endTime != null) { + where += " AND gmt_modified <=? "; + } + return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -200,7 +257,7 @@ public String findConfigAllInfo() { @Override public String listGroupKeyMd5ByPageFetchRows() { return " SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified " - + "FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) g, config_info t WHERE g.id = t.id"; + + "FROM ( SELECT id FROM config_info ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ) g, config_info t WHERE g.id = t.id"; } @Override @@ -281,7 +338,7 @@ public String findConfigInfoLikeCountRows(Map params) { } @Override - public String findConfigInfoLikeFetchRows(Map params) { + public String findConfigInfoLikeFetchRows(Map params, int startRow, int pageSize) { final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE "; String where = " 1=1 "; if (!StringUtils.isEmpty(params.get(DATA_ID))) { @@ -297,7 +354,7 @@ public String findConfigInfoLikeFetchRows(Map params) { if (!StringUtils.isBlank(params.get(CONTENT))) { where += " AND content LIKE ? "; } - return sqlFetchRows + where; + return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -317,7 +374,7 @@ public String findConfigInfoBaseLikeCountRows(Map params) { } @Override - public String findConfigInfoBaseLikeFetchRows(Map params) { + public String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize) { final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; String where = " 1=1 AND tenant_id='' "; if (!StringUtils.isBlank(params.get(DATA_ID))) { @@ -329,7 +386,7 @@ public String findConfigInfoBaseLikeFetchRows(Map params) { if (!StringUtils.isBlank(params.get(CONTENT))) { where += " AND content LIKE ? "; } - return sqlFetchRows + where; + return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -349,7 +406,7 @@ public String findConfigInfoByDataIdAndAdvanceCountRows(Map para } @Override - public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params) { + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int startRow, int pageSize) { 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=? "); @@ -357,7 +414,7 @@ public String findConfigInfoByDataIdAndAdvanceFetchRows(Map para sql.append(" AND app_name=? "); } - return sql.toString(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -381,7 +438,7 @@ public String findConfigInfo4PageCountRows(Map params) { } @Override - public String findConfigInfo4PageFetchRows(Map params) { + public String findConfigInfo4PageFetchRows(Map params, int startRow, int pageSize) { final String appName = params.get(APP_NAME); final String dataId = params.get(DATA_ID); final String group = params.get(GROUP); @@ -397,7 +454,7 @@ public String findConfigInfo4PageFetchRows(Map params) { if (StringUtils.isNotBlank(appName)) { where.append(" AND app_name=? "); } - return sql + where; + return sql + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -406,8 +463,9 @@ public String findConfigInfoBaseByDataIdCountRows() { } @Override - public String findConfigInfoBaseByDataIdFetchRows() { - return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?"; + public String findConfigInfoBaseByDataIdFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? " + + "AND tenant_id=?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -416,9 +474,9 @@ public String findConfigInfoByGroupCountRows() { } @Override - public String findConfigInfoByGroupFetchRows() { + public String findConfigInfoByGroupFetchRows(int startRow, int pageSize) { return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " - + "tenant_id=?"; + + "tenant_id=?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -427,9 +485,9 @@ public String findConfigInfoByGroupAndAppCountRows() { } @Override - public String findConfigInfoByGroupAndAppFetchRows() { + public String findConfigInfoByGroupAndAppFetchRows(int startRow, int pageSize) { return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND " - + "tenant_id=? AND app_name =?"; + + "tenant_id=? AND app_name =?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -443,14 +501,14 @@ public String findConfigInfoByAdvanceCountRows(Map params) { } @Override - public String findConfigInfoByAdvanceFetchRows(Map params) { + public String findConfigInfoByAdvanceFetchRows(Map params, int startRow, int pageSize) { 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(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -459,8 +517,9 @@ public String findConfigInfoBaseByGroupCountRows() { } @Override - public String findConfigInfoBaseByGroupFetchRows() { - return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?"; + public String findConfigInfoBaseByGroupFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? " + + "AND tenant_id=?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -488,7 +547,7 @@ public String findConfigInfoLike4PageCountRows(Map params) { } @Override - public String findConfigInfoLike4PageFetchRows(Map params) { + public String findConfigInfoLike4PageFetchRows(Map params, int startRow, int pageSize) { final String appName = params.get("appName"); final String content = params.get("content"); final String dataId = params.get(DATA_ID); @@ -508,13 +567,13 @@ public String findConfigInfoLike4PageFetchRows(Map params) { if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); } - return sqlFetchRows + where; + return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override - public String findAllConfigInfoFetchRows() { + public String findAllConfigInfoFetchRows(int startRow, int pageSize) { 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 ?,? )" + + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY )" + " g, config_info t WHERE g.id = t.id "; } @@ -543,14 +602,14 @@ public String findConfigInfoByGroupAndAdvanceCountRows(Map param } @Override - public String findConfigInfoByGroupAndAdvanceFetchRows(Map params) { + public String findConfigInfoByGroupAndAdvanceFetchRows(Map params, int startRow, int pageSize) { 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(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -591,4 +650,9 @@ public String removeConfigInfoByIdsAtomic(int size) { public String getTableName() { return TableConstant.CONFIG_INFO; } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; + } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java index 9ffe0007e71..7dac5e01987 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerby.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; @@ -62,9 +63,9 @@ public String count() { } @Override - public String findAllConfigInfoTagForDumpAllFetchRows() { + public String findAllConfigInfoTagForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " - + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,? ) " + + " FROM ( SELECT id FROM config_info_tag ORDER BY id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ) " + " g, config_info_tag t WHERE g.id = t.id "; } @@ -77,4 +78,9 @@ public String removeConfigInfoTag() { public String getTableName() { return TableConstant.CONFIG_INFO_TAG; } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; + } } 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 index 8b8fd0fe753..c47a1883055 100644 --- 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 @@ -17,6 +17,8 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; import java.util.Map; @@ -71,7 +73,7 @@ public String findConfigInfoByDataIdAndAdvanceCountRows(Map para } @Override - public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize) { + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize) { 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 " @@ -89,7 +91,7 @@ public String findConfigInfoByDataIdAndAdvanceFetchRows(Map para if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -124,7 +126,7 @@ public String findConfigInfo4PageCountRows(final Map params, int } @Override - public String findConfigInfo4PageFetchRows(final Map params, int tagSize) { + public String findConfigInfo4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize) { final String appName = params.get("appName"); final String dataId = params.get("dataId"); final String group = params.get("group"); @@ -152,7 +154,7 @@ public String findConfigInfo4PageFetchRows(final Map params, int where.append('?'); } where.append(") "); - return sql + where; + return sql + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -175,7 +177,7 @@ public String findConfigInfoByGroupAndAdvanceCountRows(final Map } @Override - public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize) { + public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize, int startRow, int pageSize) { 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 " @@ -193,7 +195,7 @@ public String findConfigInfoByGroupAndAdvanceFetchRows(final Map if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -230,7 +232,7 @@ public String findConfigInfoLike4PageCountRows(final Map params, } @Override - public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize) { + public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize) { final String appName = params.get("appName"); final String content = params.get("content"); final String dataId = params.get("dataId"); @@ -262,7 +264,7 @@ public String findConfigInfoLike4PageFetchRows(final Map params, where.append('?'); } where.append(") "); - return sqlFetchRows + where; + return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -308,12 +310,11 @@ public String findConfigInfoByAdvanceCountRows(Map params, int t } @Override - public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize) { + public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize) { 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) { @@ -326,6 +327,16 @@ public String findConfigInfoByAdvanceFetchRows(Map params, int t if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + } + + @Override + public String getTableName() { + return TableConstant.CONFIG_TAGS_RELATION; + } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java index 4d3f6b97e7c..4eb606b5ede 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerby.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; @@ -56,9 +57,10 @@ public String findConfigHistoryCountRows() { } @Override - public String findConfigHistoryFetchRows() { + public String findConfigHistoryFetchRows(int startRow, int pageSize) { return "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified " - + "FROM his_config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC"; + + "FROM his_config_info WHERE data_id = ? AND group_id = ? AND tenant_id = ? " + + "ORDER BY nid DESC" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; } @Override @@ -77,4 +79,9 @@ public String detailPreviousConfigHistory() { public String getTableName() { return TableConstant.HIS_CONFIG_INFO; } + + @Override + public String getDataSource() { + return DataSourceConstant.DERBY; + } } 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 3fb849803d1..ca6b0abded7 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 @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; @@ -113,7 +114,7 @@ public String findConfigInfoAggrByPageCountRows() { } @Override - public String findConfigInfoAggrByPageFetchRows() { + public String findConfigInfoAggrByPageFetchRows(int startRow, int pageSize) { return "SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id= ? AND " + "group_id= ? AND tenant_id= ? ORDER BY datum_id LIMIT ?,?"; } @@ -132,4 +133,9 @@ public String findDatumIdByContent() { public String getTableName() { return TableConstant.CONFIG_INFO_AGGR; } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; + } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java index edbc3f99ffa..0528d322043 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySql.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; @@ -61,7 +62,7 @@ public String count() { } @Override - public String findAllConfigInfoBetaForDumpAllFetchRows() { + public String findAllConfigInfoBetaForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips,encrypted_data_key " + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? )" + " g, config_info_beta t WHERE g.id = t.id "; @@ -71,4 +72,9 @@ public String findAllConfigInfoBetaForDumpAllFetchRows() { public String getTableName() { return TableConstant.CONFIG_INFO_BETA; } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; + } } 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 a2396d627b3..2ad215cb0f5 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 @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; @@ -76,8 +77,9 @@ public String findConfigInfoById() { } @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 = ?"; + public String findConfigInfoByDataIdFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info " + + "WHERE data_id = ? AND tenant_id = ? " + " LIMIT " + startRow + "," + pageSize; } @Override @@ -86,8 +88,9 @@ public String findConfigInfoByDataIdAndAppCountRows() { } @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= ?"; + public String findConfigInfoByDataIdAndAppFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info " + + "WHERE data_id= ? AND tenant_id= ? AND app_name= ?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -101,8 +104,9 @@ public String findConfigInfoByAppCountRows() { } @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= ?"; + public String findConfigInfoByAppFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info" + + " WHERE tenant_id LIKE ? AND app_name= ?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -128,14 +132,14 @@ public String findAllConfigKey() { } @Override - public String findAllConfigInfoBaseFetchRows() { + public String findAllConfigInfoBaseFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,content,md5" + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) " + " g, config_info t WHERE g.id = t.id "; } @Override - public String findAllConfigInfoForDumpAllFetchRows() { + public String findAllConfigInfoForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,type,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified " + " FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? )" + " g, config_info t WHERE g.id = t.id "; @@ -188,7 +192,7 @@ public String findChangeConfigCountRows(Map params, final Timest @Override public String findChangeConfigFetchRows(Map params, final Timestamp startTime, - final Timestamp endTime) { + final Timestamp endTime, int startRow, int pageSize, long lastMaxId) { final String tenant = params.get(TENANT); final String dataId = params.get(DATA_ID); final String group = params.get(GROUP); @@ -216,7 +220,7 @@ public String findChangeConfigFetchRows(Map params, final Timest if (endTime != null) { where += " AND gmt_modified <=? "; } - return sqlFetchRows + where; + return sqlFetchRows + where + " AND id > " + lastMaxId + " ORDER BY id ASC" + " LIMIT " + 0 + "," + pageSize; } @Override @@ -340,7 +344,7 @@ public String findConfigInfoLikeCountRows(Map params) { } @Override - public String findConfigInfoLikeFetchRows(Map params) { + public String findConfigInfoLikeFetchRows(Map params, int startRow, int pageSize) { final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE "; String where = " 1=1 "; if (!StringUtils.isEmpty(params.get(DATA_ID))) { @@ -357,7 +361,7 @@ public String findConfigInfoLikeFetchRows(Map params) { where += " AND content LIKE ? "; } - return sqlFetchRows + where; + return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; } @Override @@ -378,7 +382,7 @@ public String findConfigInfoBaseLikeCountRows(Map params) { } @Override - public String findConfigInfoBaseLikeFetchRows(Map params) { + public String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize) { final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; String where = " 1=1 AND tenant_id='' "; if (!StringUtils.isBlank(params.get(DATA_ID))) { @@ -390,7 +394,7 @@ public String findConfigInfoBaseLikeFetchRows(Map params) { if (!StringUtils.isBlank(params.get(CONTENT))) { where += " AND content LIKE ? "; } - return sqlFetchRows + where; + return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; } @Override @@ -409,14 +413,14 @@ public String findConfigInfoByDataIdAndAdvanceCountRows(Map para } @Override - public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params) { + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int startRow, int pageSize) { 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(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; } @Override @@ -440,7 +444,7 @@ public String findConfigInfo4PageCountRows(Map params) { } @Override - public String findConfigInfo4PageFetchRows(Map params) { + public String findConfigInfo4PageFetchRows(Map params, int startRow, int pageSize) { final String appName = params.get(APP_NAME); final String dataId = params.get(DATA_ID); final String group = params.get(GROUP); @@ -456,7 +460,7 @@ public String findConfigInfo4PageFetchRows(Map params) { if (StringUtils.isNotBlank(appName)) { where.append(" AND app_name=? "); } - return sql + where; + return sql + where + " LIMIT " + startRow + "," + pageSize; } @Override @@ -465,8 +469,8 @@ public String findConfigInfoBaseByDataIdCountRows() { } @Override - public String findConfigInfoBaseByDataIdFetchRows() { - return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?"; + public String findConfigInfoBaseByDataIdFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -475,8 +479,9 @@ public String findConfigInfoByGroupCountRows() { } @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=?"; + public String findConfigInfoByGroupFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE" + + " group_id=? AND tenant_id=?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -485,8 +490,9 @@ public String findConfigInfoByGroupAndAppCountRows() { } @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 =?"; + public String findConfigInfoByGroupAndAppFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE " + + "group_id=? AND tenant_id=? AND app_name =?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -500,14 +506,14 @@ public String findConfigInfoByAdvanceCountRows(Map params) { } @Override - public String findConfigInfoByAdvanceFetchRows(Map params) { + public String findConfigInfoByAdvanceFetchRows(Map params, int startRow, int pageSize) { 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(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; } @Override @@ -516,8 +522,8 @@ public String findConfigInfoBaseByGroupCountRows() { } @Override - public String findConfigInfoBaseByGroupFetchRows() { - return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?"; + public String findConfigInfoBaseByGroupFetchRows(int startRow, int pageSize) { + return "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -545,7 +551,7 @@ public String findConfigInfoLike4PageCountRows(Map params) { } @Override - public String findConfigInfoLike4PageFetchRows(Map params) { + public String findConfigInfoLike4PageFetchRows(Map params, int startRow, int pageSize) { String dataId = params.get(DATA_ID); String group = params.get(GROUP); final String appName = params.get(APP_NAME); @@ -565,11 +571,11 @@ public String findConfigInfoLike4PageFetchRows(Map params) { if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); } - return sqlFetchRows + where; + return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; } @Override - public String findAllConfigInfoFetchRows() { + public String findAllConfigInfoFetchRows(int startRow, int pageSize) { 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 "; @@ -600,14 +606,14 @@ public String findConfigInfoByGroupAndAdvanceCountRows(Map param } @Override - public String findConfigInfoByGroupAndAdvanceFetchRows(Map params) { + public String findConfigInfoByGroupAndAdvanceFetchRows(Map params, int startRow, int pageSize) { 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(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; } @Override @@ -649,4 +655,9 @@ public String removeConfigInfoByIdsAtomic(int size) { public String getTableName() { return TableConstant.CONFIG_INFO; } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; + } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java index cc8f931a9e1..95e7f33c0e0 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySql.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; @@ -62,7 +63,7 @@ public String count() { } @Override - public String findAllConfigInfoTagForDumpAllFetchRows() { + public String findAllConfigInfoTagForDumpAllFetchRows(int startRow, int pageSize) { return " SELECT t.id,data_id,group_id,tenant_id,tag_id,app_name,content,md5,gmt_modified " + " FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,? ) " + "g, config_info_tag t WHERE g.id = t.id "; @@ -77,4 +78,9 @@ public String removeConfigInfoTag() { public String getTableName() { return TableConstant.CONFIG_INFO_TAG; } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; + } } 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 index c8b9a84a92c..0d6ef4ede25 100644 --- 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 @@ -17,6 +17,8 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; import java.util.Map; @@ -69,7 +71,7 @@ public String findConfigInfoByDataIdAndAdvanceCountRows(Map para } @Override - public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize) { + public String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize) { 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 " @@ -85,7 +87,7 @@ public String findConfigInfoByDataIdAndAdvanceFetchRows(Map para if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; } @Override @@ -117,7 +119,7 @@ public String findConfigInfo4PageCountRows(final Map params, fin } @Override - public String findConfigInfo4PageFetchRows(Map params, int tagSize) { + public String findConfigInfo4PageFetchRows(Map params, int tagSize, int startRow, int pageSize) { final String appName = params.get("appName"); final String dataId = params.get("dataId"); final String group = params.get("group"); @@ -145,7 +147,7 @@ public String findConfigInfo4PageFetchRows(Map params, int tagSi where.append('?'); } where.append(") "); - return sql + where; + return sql + where + " LIMIT " + startRow + "," + pageSize; } @Override @@ -168,7 +170,7 @@ public String findConfigInfoByGroupAndAdvanceCountRows(final Map } @Override - public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize) { + public String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize, int startRow, int pageSize) { 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 " @@ -186,7 +188,7 @@ public String findConfigInfoByGroupAndAdvanceFetchRows(final Map if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; } @Override @@ -224,7 +226,7 @@ public String findConfigInfoLike4PageCountRows(final Map params, } @Override - public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize) { + public String findConfigInfoLike4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize) { final String appName = params.get("appName"); final String content = params.get("content"); final String dataId = params.get("dataId"); @@ -255,7 +257,7 @@ public String findConfigInfoLike4PageFetchRows(final Map params, where.append('?'); } where.append(") "); - return sqlFetchRows + where; + return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; } @Override @@ -300,7 +302,7 @@ public String findConfigInfoByAdvanceCountRows(Map params, int t } @Override - public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize) { + public String findConfigInfoByAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize) { 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 " @@ -316,6 +318,16 @@ public String findConfigInfoByAdvanceFetchRows(Map params, int t if (StringUtils.isNotBlank(appName)) { sql.append(" AND a.app_name=? "); } - return sql.toString(); + return sql.toString() + " LIMIT " + startRow + "," + pageSize; + } + + @Override + public String getTableName() { + return TableConstant.CONFIG_TAGS_RELATION; + } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java index 0392fd9dd5c..f7dd5f2a335 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySql.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; @@ -54,9 +55,9 @@ public String findConfigHistoryCountRows() { } @Override - public String findConfigHistoryFetchRows() { + public String findConfigHistoryFetchRows(int startRow, int pageSize) { return "SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info " - + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC"; + + "WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC" + " LIMIT " + startRow + "," + pageSize; } @Override @@ -75,4 +76,9 @@ public String detailPreviousConfigHistory() { public String getTableName() { return TableConstant.HIS_CONFIG_INFO; } + + @Override + public String getDataSource() { + return DataSourceConstant.MYSQL; + } } 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 9167205c143..ba628560e87 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 @@ -147,9 +147,11 @@ public interface ConfigInfoAggrMapper extends Mapper { * SELECT data_id,group_id,tenant_id,datum_id,app_name,content FROM config_info_aggr WHERE data_id=? AND * group_id=? AND tenant_id=? ORDER BY datum_id LIMIT ?,? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying aggregation config info. */ - String findConfigInfoAggrByPageFetchRows(); + String findConfigInfoAggrByPageFetchRows(int startRow, int pageSize); /** * Find all aggregated data sets. diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoBetaMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoBetaMapper.java index 8b555247ce3..2c62a9fb265 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoBetaMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoBetaMapper.java @@ -87,7 +87,9 @@ public interface ConfigInfoBetaMapper extends Mapper { * SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,beta_ips,encrypted_data_key * FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT ?,? ) g, config_info_beta t WHERE g.id = t.id * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying all beta config info for dump task. */ - String findAllConfigInfoBetaForDumpAllFetchRows(); + String findAllConfigInfoBetaForDumpAllFetchRows(int startRow, int pageSize); } 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 aeeaf746c08..09cc0291418 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 @@ -87,9 +87,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql to */ - String findConfigInfoByDataIdFetchRows(); + String findConfigInfoByDataIdFetchRows(int startRow, int pageSize); /** * Query the count of the configInfo by dataId. @@ -105,9 +107,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE data_id=? AND tenant_id=? AND app_name=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of query configuration information based on dataId. */ - String findConfigInfoByDataIdAndAppFetchRows(); + String findConfigInfoByDataIdAndAppFetchRows(int startRow, int pageSize); /** * The count of config_info table sql. @@ -133,9 +137,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying configration information based on group. */ - String findConfigInfoByAppFetchRows(); + String findConfigInfoByAppFetchRows(int startRow, int pageSize); /** * Returns the number of configuration items. @@ -182,9 +188,11 @@ public interface ConfigInfoMapper extends Mapper { * SELECT id FROM config_info ORDER BY id LIMIT ?,?) g, * config_info t WHERE g.id = t.id * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying all configuration information by page. */ - String findAllConfigInfoBaseFetchRows(); + String findAllConfigInfoBaseFetchRows(int startRow, int pageSize); /** * Query all configuration information by page for dump task. @@ -193,9 +201,11 @@ public interface ConfigInfoMapper extends Mapper { * FROM ( SELECT id FROM config_info ORDER BY id LIMIT ?,? ) g, config_info t * WHERE g.id = t.id * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying all configuration information by page for dump task. */ - String findAllConfigInfoForDumpAllFetchRows(); + String findAllConfigInfoForDumpAllFetchRows(int startRow, int pageSize); /** * Query all config info. @@ -239,9 +249,13 @@ public interface ConfigInfoMapper extends Mapper { * the value is the key's value. * @param startTime start time * @param endTime end time + * @param startRow The start index. + * @param pageSize The size of page. + * @param lastMaxId The max id. * @return The sql of getting config information according to the time period. */ - String findChangeConfigFetchRows(Map params, final Timestamp startTime, final Timestamp endTime); + String findChangeConfigFetchRows(Map params, final Timestamp startTime, final Timestamp endTime, + int startRow, int pageSize, long lastMaxId); /** * Add configuration; database atomic operation, minimum sql action, no business encapsulation. @@ -367,9 +381,11 @@ public interface ConfigInfoMapper extends Mapper { * * @param params The map of params, the key is the parameter name(dataId, groupId, tenant_id, appName, content), * the value is the key's value. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of getting the config information. */ - String findConfigInfoLikeFetchRows(Map params); + String findConfigInfoLikeFetchRows(Map params, int startRow, int pageSize); /** * Get the count of config information. @@ -389,9 +405,11 @@ public interface ConfigInfoMapper extends Mapper { * * @param params The map of params, the key is the parameter name(dataId, groupId, tenant_id, content), * the value is the key's value. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of getting the config information. */ - String findConfigInfoBaseLikeFetchRows(Map params); + String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize); /** * To get number of config information by dataId and tenantId. @@ -418,9 +436,11 @@ public interface ConfigInfoMapper extends Mapper { * 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. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of finding config info. */ - String findConfigInfoByDataIdAndAdvanceFetchRows(Map params); + String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int startRow, int pageSize); /** * find the count of config info. @@ -438,9 +458,11 @@ public interface ConfigInfoMapper extends Mapper { * 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. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of finding config info. */ - String findConfigInfo4PageFetchRows(Map params); + String findConfigInfo4PageFetchRows(Map params, int startRow, int pageSize); /** * The count of querying configuration information based on dataId. @@ -456,9 +478,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,content FROM config_info WHERE data_id=? AND tenant_id=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of query configuration information based on dataId. */ - String findConfigInfoBaseByDataIdFetchRows(); + String findConfigInfoBaseByDataIdFetchRows(int startRow, int pageSize); /** * Get the count of querying configuration information based on group. @@ -474,9 +498,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE group_id=? AND tenant_id=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return Get the config info by groupId and tenantId. */ - String findConfigInfoByGroupFetchRows(); + String findConfigInfoByGroupFetchRows(int startRow, int pageSize); /** * The count of querying configuration information based on group. @@ -492,9 +518,11 @@ public interface ConfigInfoMapper extends Mapper { * 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 =? * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying configuration information based on group. */ - String findConfigInfoByGroupAndAppFetchRows(); + String findConfigInfoByGroupAndAppFetchRows(int startRow, int pageSize); /** * Query configuration information count. @@ -511,10 +539,12 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? ... * + * @param startRow The start index. + * @param pageSize The size of page. * @param params The map of appName. * @return Query configuration information. */ - String findConfigInfoByAdvanceFetchRows(Map params); + String findConfigInfoByAdvanceFetchRows(Map params, int startRow, int pageSize); /** * Query configuration information count based on group. @@ -530,9 +560,11 @@ public interface ConfigInfoMapper extends Mapper { * The default sql: * SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? * + * @param startRow The start index. + * @param pageSize The size of page. * @return Query configuration information based on group. */ - String findConfigInfoBaseByGroupFetchRows(); + String findConfigInfoBaseByGroupFetchRows(int startRow, int pageSize); /** * Query config info count. @@ -550,9 +582,11 @@ public interface ConfigInfoMapper extends Mapper { * 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 + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying config info */ - String findConfigInfoLike4PageFetchRows(Map params); + String findConfigInfoLike4PageFetchRows(Map params, int startRow, int pageSize); /** * Query all configuration information by page. @@ -561,9 +595,11 @@ public interface ConfigInfoMapper extends Mapper { * + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" * + " g, config_info t WHERE g.id = t.id * + * @param startRow The start index. + * @param pageSize The size of page. * @return Query all configuration information by page. */ - String findAllConfigInfoFetchRows(); + String findAllConfigInfoFetchRows(int startRow, int pageSize); /** * Query configuration information based on dataId and group. @@ -591,9 +627,11 @@ public interface ConfigInfoMapper extends Mapper { * 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. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying configuration information */ - String findConfigInfoByGroupAndAdvanceFetchRows(Map params); + String findConfigInfoByGroupAndAdvanceFetchRows(Map params, int startRow, int pageSize); /** * find ConfigInfo by ids. diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoTagMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoTagMapper.java index 08405c9dfda..c00523241b5 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoTagMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/ConfigInfoTagMapper.java @@ -88,9 +88,11 @@ public interface ConfigInfoTagMapper extends Mapper { * FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT ?,? ) g, * config_info_tag t WHERE g.id = t.id * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying all tag config info for dump task. */ - String findAllConfigInfoTagForDumpAllFetchRows(); + String findAllConfigInfoTagForDumpAllFetchRows(int startRow, int pageSize); /** * Delete configuration; database atomic operation, minimum SQL action, no business encapsulation. 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 ba1daa29c30..36b15ad9361 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 @@ -24,7 +24,7 @@ * @author hyx **/ -public interface ConfigTagsRelationMapper { +public interface ConfigTagsRelationMapper extends Mapper { /** @@ -46,9 +46,11 @@ public interface ConfigTagsRelationMapper { * * @param params The map of appName. * @param tagSize the tags name size. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of finding config info. */ - String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize); + String findConfigInfoByDataIdAndAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize); /** * Get the count of config info. @@ -70,9 +72,11 @@ public interface ConfigTagsRelationMapper { * * @param params The keys and values are dataId and group. * @param tagSize the tags name size. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of finding config info. */ - String findConfigInfo4PageFetchRows(final Map params, int tagSize); + String findConfigInfo4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize); /** * Get the count of config information by group id and tenant id and tag name. @@ -93,9 +97,11 @@ public interface ConfigTagsRelationMapper { * * @param params the keys and values are dataId and group. * @param tagSize the tags name size. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying configuration information. */ - String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize); + String findConfigInfoByGroupAndAdvanceFetchRows(final Map params, int tagSize, int startRow, int pageSize); /** * Get the count of config information by config tags relation. @@ -116,9 +122,11 @@ public interface ConfigTagsRelationMapper { * * @param params the keys and values are dataId and group. * @param tagSize the tags name size. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying config info. */ - String findConfigInfoLike4PageFetchRows(final Map params, int tagSize); + String findConfigInfoLike4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize); /** * Add configuration; database atomic operation, minimum sql action, no business encapsulation. @@ -174,9 +182,11 @@ public interface ConfigTagsRelationMapper { * * @param params The map of appName. * @param tagSize The size of tags. + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of querying configuration information. */ - String findConfigInfoByAdvanceFetchRows(Map params, int tagSize); + String findConfigInfoByAdvanceFetchRows(Map params, int tagSize, int startRow, int pageSize); /** * The default sql: diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/HistoryConfigInfoMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/HistoryConfigInfoMapper.java index 865aa1e47ba..db74c179c0b 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/HistoryConfigInfoMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/HistoryConfigInfoMapper.java @@ -76,9 +76,11 @@ public interface HistoryConfigInfoMapper extends Mapper { * SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info * WHERE data_id = ? AND group_id = ? AND tenant_id = ? ORDER BY nid DESC * + * @param startRow The start index. + * @param pageSize The size of page. * @return The sql of listing configuration history change record. */ - String findConfigHistoryFetchRows(); + String findConfigHistoryFetchRows(int startRow, int pageSize); /** * Get history config detail. diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/Mapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/Mapper.java index 021d4610649..e9027c3266b 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/Mapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/Mapper.java @@ -29,4 +29,10 @@ public interface Mapper { * @return The name of table. */ String getTableName(); + + /** + * Get the datasource name. + * @return The name of datasource. + */ + String getDataSource(); } \ No newline at end of file diff --git a/plugin/datasource/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper b/plugin/datasource/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper new file mode 100644 index 00000000000..8db94fc0349 --- /dev/null +++ b/plugin/datasource/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper @@ -0,0 +1,29 @@ +# +# 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. +# + +com.alibaba.nacos.plugin.datasource.impl.mysql.ConfigInfoAggrMapperByMySql +com.alibaba.nacos.plugin.datasource.impl.mysql.ConfigInfoBetaMapperByMySql +com.alibaba.nacos.plugin.datasource.impl.mysql.ConfigInfoMapperByMySql +com.alibaba.nacos.plugin.datasource.impl.mysql.ConfigInfoTagMapperByMySql +com.alibaba.nacos.plugin.datasource.impl.mysql.ConfigTagsRelationMapperByMySql +com.alibaba.nacos.plugin.datasource.impl.mysql.HistoryConfigInfoMapperByMySql + +com.alibaba.nacos.plugin.datasource.impl.derby.ConfigInfoAggrMapperByDerby +com.alibaba.nacos.plugin.datasource.impl.derby.ConfigInfoBetaMapperByDerby +com.alibaba.nacos.plugin.datasource.impl.derby.ConfigInfoMapperByDerby +com.alibaba.nacos.plugin.datasource.impl.derby.ConfigInfoTagMapperByDerby +com.alibaba.nacos.plugin.datasource.impl.derby.ConfigInfoTagsRelationMapperByDerby +com.alibaba.nacos.plugin.datasource.impl.derby.HistoryConfigInfoMapperByDerby \ No newline at end of file