diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistService.java b/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistService.java index 99a5623cfdb..94a454e9595 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistService.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/GroupCapacityPersistService.java @@ -24,15 +24,17 @@ import com.alibaba.nacos.config.server.service.datasource.DynamicDataSource; import com.alibaba.nacos.config.server.utils.TimeUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; import com.alibaba.nacos.plugin.datasource.mapper.GroupCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.jdbc.CannotGetJdbcConnectionException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.RowMapper; -import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @@ -71,7 +73,8 @@ public class GroupCapacityPersistService { public void init() { this.dataSourceService = DynamicDataSource.getInstance().getDataSource(); this.jdbcTemplate = dataSourceService.getJdbcTemplate(); - Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, false); + Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, + false); this.mapperManager = MapperManager.instance(isDataSourceLogEnable); } @@ -117,41 +120,24 @@ public Capacity getClusterCapacity() { public boolean insertGroupCapacity(final GroupCapacity capacity) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql; + MapperResult mapperResult; + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GROUP_ID, capacity.getGroup()); + context.putUpdateParameter(FieldConstant.QUOTA, capacity.getQuota()); + context.putUpdateParameter(FieldConstant.MAX_SIZE, capacity.getMaxSize()); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, capacity.getMaxAggrSize()); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, capacity.getMaxAggrCount()); + context.putUpdateParameter(FieldConstant.GMT_CREATE, capacity.getGmtCreate()); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, capacity.getGmtModified()); + + context.putWhereParameter(FieldConstant.GROUP_ID, capacity.getGroup()); if (CLUSTER.equals(capacity.getGroup())) { - sql = groupCapacityMapper.insertIntoSelect(); + mapperResult = groupCapacityMapper.insertIntoSelect(context); } else { // Note: add "tenant_id = ''" condition. - sql = groupCapacityMapper.insertIntoSelectByWhere(); - } - String[] primaryKeyGeneratedKeys = groupCapacityMapper.getPrimaryKeyGeneratedKeys(); - return insertGroupCapacity(sql, capacity, primaryKeyGeneratedKeys); - } - - private boolean insertGroupCapacity(final String sql, final GroupCapacity capacity, String[] primaryKeyGeneratedKeys) { - try { - GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder(); - PreparedStatementCreator preparedStatementCreator = connection -> { - PreparedStatement ps = connection.prepareStatement(sql, primaryKeyGeneratedKeys); - String group = capacity.getGroup(); - ps.setString(1, group); - ps.setInt(2, capacity.getQuota()); - ps.setInt(3, capacity.getMaxSize()); - ps.setInt(4, capacity.getMaxAggrCount()); - ps.setInt(5, capacity.getMaxAggrSize()); - ps.setTimestamp(6, capacity.getGmtCreate()); - ps.setTimestamp(7, capacity.getGmtModified()); - if (!CLUSTER.equals(group)) { - ps.setString(8, group); - } - return ps; - }; - jdbcTemplate.update(preparedStatementCreator, generatedKeyHolder); - return generatedKeyHolder.getKey() != null; - } catch (CannotGetJdbcConnectionException e) { - FATAL_LOG.error("[db-error]", e); - throw e; + mapperResult = groupCapacityMapper.insertIntoSelectByWhere(context); } + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) > 0; } public int getClusterUsage() { @@ -178,10 +164,13 @@ public int getClusterUsage() { public boolean incrementUsageWithDefaultQuotaLimit(GroupCapacity groupCapacity) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql = groupCapacityMapper.incrementUsageByWhereQuotaEqualZero(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, groupCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.GROUP_ID, groupCapacity.getGroup()); + context.putWhereParameter(FieldConstant.QUOTA, groupCapacity.getQuota()); + MapperResult mapperResult = groupCapacityMapper.incrementUsageByWhereQuotaEqualZero(context); try { - int affectRow = jdbcTemplate - .update(sql, groupCapacity.getGmtModified(), groupCapacity.getGroup(), groupCapacity.getQuota()); + int affectRow = jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); return affectRow == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); @@ -198,9 +187,12 @@ public boolean incrementUsageWithDefaultQuotaLimit(GroupCapacity groupCapacity) public boolean incrementUsageWithQuotaLimit(GroupCapacity groupCapacity) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql = groupCapacityMapper.incrementUsageByWhereQuotaNotEqualZero(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, groupCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.GROUP_ID, groupCapacity.getGroup()); + MapperResult mapperResult = groupCapacityMapper.incrementUsageByWhereQuotaNotEqualZero(context); try { - return jdbcTemplate.update(sql, groupCapacity.getGmtModified(), groupCapacity.getGroup()) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -217,9 +209,12 @@ public boolean incrementUsageWithQuotaLimit(GroupCapacity groupCapacity) { public boolean incrementUsage(GroupCapacity groupCapacity) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql = groupCapacityMapper.incrementUsageByWhere(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, groupCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.GROUP_ID, groupCapacity.getGroup()); + MapperResult mapperResult = groupCapacityMapper.incrementUsageByWhere(context); try { - int affectRow = jdbcTemplate.update(sql, groupCapacity.getGmtModified(), groupCapacity.getGroup()); + int affectRow = jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); return affectRow == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); @@ -236,9 +231,12 @@ public boolean incrementUsage(GroupCapacity groupCapacity) { public boolean decrementUsage(GroupCapacity groupCapacity) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql = groupCapacityMapper.decrementUsageByWhere(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, groupCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.GROUP_ID, groupCapacity.getGroup()); + MapperResult mapperResult = groupCapacityMapper.decrementUsageByWhere(context); try { - return jdbcTemplate.update(sql, groupCapacity.getGmtModified(), groupCapacity.getGroup()) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -277,11 +275,11 @@ public boolean updateGroupCapacity(String group, Integer quota, Integer maxSize, } columnList.add("gmt_modified"); argList.add(TimeUtils.getCurrentTime()); - + List whereList = CollectionUtils.list(); whereList.add("group_id"); argList.add(group); - + GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); String sql = groupCapacityMapper.update(columnList, whereList); @@ -311,20 +309,23 @@ public boolean updateMaxSize(String group, Integer maxSize) { public boolean correctUsage(String group, Timestamp gmtModified) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql; + MapperResult mapperResult; + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, gmtModified); + context.putWhereParameter(FieldConstant.GROUP_ID, group); if (CLUSTER.equals(group)) { - sql = groupCapacityMapper.updateUsage(); + mapperResult = groupCapacityMapper.updateUsage(context); try { - return jdbcTemplate.update(sql, gmtModified, group) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; } } else { // Note: add "tenant_id = ''" condition. - sql = groupCapacityMapper.updateUsageByWhere(); + mapperResult = groupCapacityMapper.updateUsageByWhere(context); try { - return jdbcTemplate.update(sql, group, gmtModified, group) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -342,16 +343,18 @@ public boolean correctUsage(String group, Timestamp gmtModified) { public List getCapacityList4CorrectUsage(long lastId, int pageSize) { GroupCapacityMapper groupCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.GROUP_CAPACITY); - String sql = groupCapacityMapper.selectGroupInfoBySize(); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, lastId); + context.setPageSize(pageSize); + + MapperResult mapperResult = groupCapacityMapper.selectGroupInfoBySize(context); try { - return jdbcTemplate.query(sql, new Object[] {lastId, pageSize}, new RowMapper() { - @Override - public GroupCapacity mapRow(ResultSet rs, int rowNum) throws SQLException { - GroupCapacity groupCapacity = new GroupCapacity(); - groupCapacity.setId(rs.getLong("id")); - groupCapacity.setGroup(rs.getString("group_id")); - return groupCapacity; - } + return jdbcTemplate.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), (rs, rowNum) -> { + GroupCapacity groupCapacity = new GroupCapacity(); + groupCapacity.setId(rs.getLong("id")); + groupCapacity.setGroup(rs.getString("group_id")); + return groupCapacity; }); } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistService.java b/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistService.java index 59ac8ee61e8..6e3824ce163 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistService.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/capacity/TenantCapacityPersistService.java @@ -23,14 +23,16 @@ import com.alibaba.nacos.config.server.service.datasource.DynamicDataSource; import com.alibaba.nacos.config.server.utils.TimeUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.TenantCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.jdbc.CannotGetJdbcConnectionException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.RowMapper; -import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @@ -69,7 +71,8 @@ public class TenantCapacityPersistService { public void init() { this.dataSourceService = DynamicDataSource.getInstance().getDataSource(); this.jdbcTemplate = dataSourceService.getJdbcTemplate(); - Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, false); + Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, + false); this.mapperManager = MapperManager.instance(isDataSourceLogEnable); } @@ -111,25 +114,19 @@ public TenantCapacity getTenantCapacity(String tenantId) { public boolean insertTenantCapacity(final TenantCapacity tenantCapacity) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - final String sql = tenantCapacityMapper.insertTenantCapacity(); - String[] primaryKeyGeneratedKeys = tenantCapacityMapper.getPrimaryKeyGeneratedKeys(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + context.putUpdateParameter(FieldConstant.QUOTA, tenantCapacity.getQuota()); + context.putUpdateParameter(FieldConstant.MAX_SIZE, tenantCapacity.getMaxSize()); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, tenantCapacity.getMaxAggrSize()); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, tenantCapacity.getMaxAggrCount()); + context.putUpdateParameter(FieldConstant.GMT_CREATE, tenantCapacity.getGmtCreate()); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, tenantCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + + final MapperResult mapperResult = tenantCapacityMapper.insertTenantCapacity(context); try { - GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder(); - PreparedStatementCreator preparedStatementCreator = connection -> { - PreparedStatement ps = connection.prepareStatement(sql, primaryKeyGeneratedKeys); - String tenant = tenantCapacity.getTenant(); - ps.setString(1, tenant); - ps.setInt(2, tenantCapacity.getQuota()); - ps.setInt(3, tenantCapacity.getMaxSize()); - ps.setInt(4, tenantCapacity.getMaxAggrCount()); - ps.setInt(5, tenantCapacity.getMaxAggrSize()); - ps.setTimestamp(6, tenantCapacity.getGmtCreate()); - ps.setTimestamp(7, tenantCapacity.getGmtModified()); - ps.setString(8, tenantCapacity.getTenant()); - return ps; - }; - jdbcTemplate.update(preparedStatementCreator, generatedKeyHolder); - return generatedKeyHolder.getKey() != null; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) > 0; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -146,11 +143,14 @@ public boolean insertTenantCapacity(final TenantCapacity tenantCapacity) { public boolean incrementUsageWithDefaultQuotaLimit(TenantCapacity tenantCapacity) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.incrementUsageWithDefaultQuotaLimit(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, tenantCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + context.putWhereParameter(FieldConstant.USAGE, tenantCapacity.getUsage()); + MapperResult mapperResult = tenantCapacityMapper.incrementUsageWithDefaultQuotaLimit(context); try { - int affectRow = jdbcTemplate.update(sql, tenantCapacity.getGmtModified(), tenantCapacity.getTenant(), - tenantCapacity.getQuota()); + int affectRow = jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); return affectRow == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); @@ -167,9 +167,13 @@ public boolean incrementUsageWithDefaultQuotaLimit(TenantCapacity tenantCapacity public boolean incrementUsageWithQuotaLimit(TenantCapacity tenantCapacity) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.incrementUsageWithQuotaLimit(); + + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, tenantCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + MapperResult mapperResult = tenantCapacityMapper.incrementUsageWithQuotaLimit(context); try { - return jdbcTemplate.update(sql, tenantCapacity.getGmtModified(), tenantCapacity.getTenant()) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -186,9 +190,13 @@ public boolean incrementUsageWithQuotaLimit(TenantCapacity tenantCapacity) { public boolean incrementUsage(TenantCapacity tenantCapacity) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.incrementUsage(); + + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, tenantCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + MapperResult mapperResult = tenantCapacityMapper.incrementUsage(context); try { - int affectRow = jdbcTemplate.update(sql, tenantCapacity.getGmtModified(), tenantCapacity.getTenant()); + int affectRow = jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); return affectRow == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); @@ -205,9 +213,12 @@ public boolean incrementUsage(TenantCapacity tenantCapacity) { public boolean decrementUsage(TenantCapacity tenantCapacity) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.decrementUsage(); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, tenantCapacity.getGmtModified()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantCapacity.getTenant()); + MapperResult mapperResult = tenantCapacityMapper.decrementUsage(context); try { - return jdbcTemplate.update(sql, tenantCapacity.getGmtModified(), tenantCapacity.getTenant()) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -278,9 +289,13 @@ public boolean updateQuota(String tenant, Integer quota) { public boolean correctUsage(String tenant, Timestamp gmtModified) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.correctUsage(); + + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, gmtModified); + context.putWhereParameter(FieldConstant.TENANT_ID, tenant); + MapperResult mapperResult = tenantCapacityMapper.correctUsage(context); try { - return jdbcTemplate.update(sql, tenant, gmtModified, tenant) == 1; + return jdbcTemplate.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) == 1; } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); throw e; @@ -297,17 +312,17 @@ public boolean correctUsage(String tenant, Timestamp gmtModified) { public List getCapacityList4CorrectUsage(long lastId, int pageSize) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); - String sql = tenantCapacityMapper.getCapacityList4CorrectUsage(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, lastId); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, pageSize); + MapperResult mapperResult = tenantCapacityMapper.getCapacityList4CorrectUsage(context); try { - return jdbcTemplate.query(sql, new Object[] {lastId, pageSize}, new RowMapper() { - @Override - public TenantCapacity mapRow(ResultSet rs, int rowNum) throws SQLException { - TenantCapacity tenantCapacity = new TenantCapacity(); - tenantCapacity.setId(rs.getLong("id")); - tenantCapacity.setTenant(rs.getString("tenant_id")); - return tenantCapacity; - } + return jdbcTemplate.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), (rs, rowNum) -> { + TenantCapacity tenantCapacity = new TenantCapacity(); + tenantCapacity.setId(rs.getLong("id")); + tenantCapacity.setTenant(rs.getString("tenant_id")); + return tenantCapacity; }); } catch (CannotGetJdbcConnectionException e) { FATAL_LOG.error("[db-error]", e); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/PaginationHelper.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/PaginationHelper.java index b6d59ea5fcb..503d749379a 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/PaginationHelper.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/PaginationHelper.java @@ -17,6 +17,7 @@ package com.alibaba.nacos.config.server.service.repository; import com.alibaba.nacos.config.server.model.Page; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.springframework.jdbc.core.RowMapper; /** @@ -42,5 +43,8 @@ Page fetchPageLimit(final String sqlCountRows, final Object[] args1, final St Page fetchPageLimit(final String sqlFetchRows, final Object[] args, final int pageNo, final int pageSize, final RowMapper rowMapper); + Page fetchPageLimit(final MapperResult countMapperResult, final MapperResult mapperResult, final int pageNo, + final int pageSize, final RowMapper rowMapper); + void updateLimit(final String sql, final Object[] args); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java index 216868ef054..c64c42aac7b 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoAggrPersistServiceImpl.java @@ -32,6 +32,7 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -234,12 +235,12 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.batchRemoveAggr(context); @@ -281,11 +282,11 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< TableConstant.CONFIG_INFO_AGGR); MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context); @@ -320,9 +321,9 @@ public List findConfigInfoAggr(String dataId, String group, Stri TableConstant.CONFIG_INFO_AGGR); MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); @@ -343,18 +344,18 @@ public Page findConfigInfoAggrByPage(String dataId, String group Arrays.asList("data_id", "group_id", "tenant_id")); MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context); String sqlFetchRows = mapperResult.getSql(); Object[] sqlFetchArgs = mapperResult.getParamList().toArray(); - + PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, - sqlFetchArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, sqlFetchArgs, + pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); } @Override @@ -455,9 +456,9 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p public List findAllAggrGroup() { ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper.findAllAggrGroupByDistinct(); + MapperResult mapperResult = configInfoAggrMapper.findAllAggrGroupByDistinct(null); - return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_CHANGED_ROW_MAPPER); + return databaseOperate.queryMany(mapperResult.getSql(), EMPTY_ARRAY, CONFIG_INFO_CHANGED_ROW_MAPPER); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoBetaPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoBetaPersistServiceImpl.java index 3f49eaf4cc9..fc8f3d43271 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoBetaPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoBetaPersistServiceImpl.java @@ -32,6 +32,7 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -200,19 +201,18 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S TableConstant.CONFIG_INFO_BETA); MapperContext context = new MapperContext(); - context.putUpdateParameter("content", configInfo.getContent()); - context.putUpdateParameter("md5", md5); - context.putUpdateParameter("beta_ips", betaIps); - context.putUpdateParameter("src_ip", srcIp); - context.putUpdateParameter("src_user", srcUser); - context.putUpdateParameter("gmt_modified", time); - context.putUpdateParameter("app_name", appNameTmp); - - context.putWhereParameter("data_id", configInfo.getDataId()); - context.putWhereParameter("group_id", configInfo.getGroup()); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("md5", configInfo.getMd5()); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); MapperResult mapperResult = configInfoBetaMapper.updateConfigInfo4BetaCas(context); final String sql = mapperResult.getSql(); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.java index 995264cfa22..7f861869e1d 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.java @@ -44,9 +44,12 @@ 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.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler; import com.alibaba.nacos.sys.env.EnvUtil; import org.apache.commons.collections.CollectionUtils; @@ -459,14 +462,16 @@ public void removeConfigInfoByIdsAtomic(final String ids) { return; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); - EmbeddedStorageContextUtils.addSqlContext(sql, paramList.toArray()); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult result = configInfoMapper.removeConfigInfoByIdsAtomic(context); + EmbeddedStorageContextUtils.addSqlContext(result.getSql(), result.getParamList()); } @Override @@ -562,12 +567,26 @@ private void updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.updateConfigInfoAtomicCas(); - final Object[] args = new Object[] {configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, - use, effect, type, schema, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, - configInfo.getMd5()}; + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5Tmp); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); - EmbeddedStorageContextUtils.addSqlContext(sql, args); + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + MapperResult mapperResult = configInfoMapper.updateConfigInfoAtomicCas(context); + + EmbeddedStorageContextUtils.addSqlContext(mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override @@ -623,16 +642,16 @@ public void updateMd5(String dataId, String group, String tenant, String md5, Ti public long findConfigMaxId() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findConfigMaxId(); - return Optional.ofNullable(databaseOperate.queryOne(sql, Long.class)).orElse(0L); + MapperResult mapperResult = configInfoMapper.findConfigMaxId(null); + return Optional.ofNullable(databaseOperate.queryOne(mapperResult.getSql(), Long.class)).orElse(0L); } @Override public List findAllDataIdAndGroup() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllDataIdAndGroup(); - return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_ROW_MAPPER); + MapperResult sql = configInfoMapper.findAllDataIdAndGroup(null); + return databaseOperate.queryMany(sql.getSql(), EMPTY_ARRAY, CONFIG_INFO_ROW_MAPPER); } @Override @@ -676,44 +695,42 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize 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 sql = null; - String sqlCount = null; - List paramList = new ArrayList<>(); - paramList.add(tenantTmp); - Map paramsMap = new HashMap<>(16); + MapperResult sql; + MapperResult sqlCount; + + final MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (StringUtils.isNotBlank(dataId)) { - paramList.add(dataId); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - paramList.add(content); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, content); } - final int startRow = (pageNo - 1) * pageSize; + context.setStartRow((pageNo - 1) * pageSize); + context.setPageSize(pageSize); + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - paramList.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, Arrays.asList(tagArr)); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, tagArr.length); - sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(paramsMap, tagArr.length, startRow, pageSize); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(context); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); - sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); + + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(context); + sql = configInfoMapper.findConfigInfo4PageFetchRows(context); } PaginationHelper helper = createPaginationHelper(); - Page page = helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCount, sql, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), @@ -728,13 +745,18 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize public Page findConfigInfoByApp(final int pageNo, final int pageSize, final String tenant, final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - PaginationHelper helper = createPaginationHelper(); final int startRow = (pageNo - 1) * pageSize; + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), - configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), - new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + MapperResult countRows = configInfoMapper.findConfigInfoByAppCountRows(context); + MapperResult fetchRows = configInfoMapper.findConfigInfoByAppFetchRows(context); + + final PaginationHelper helper = createPaginationHelper(); + return helper.fetchPageLimit(countRows, fetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -744,9 +766,14 @@ public Page findConfigInfoBaseByGroup(final int pageNo, final in final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), - configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), - new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, StringUtils.EMPTY); + MapperResult mapperResult = configInfoMapper.findConfigInfoBaseByGroupFetchRows(context); + + return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), mapperResult.getSql(), + mapperResult.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @Override @@ -765,8 +792,11 @@ public int configInfoCount() { public int configInfoCount(String tenant) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.configInfoLikeTenantCount(); - Integer result = databaseOperate.queryOne(sql, new Object[] {tenant}, Integer.class); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenant); + MapperResult mapperResult = configInfoMapper.configInfoLikeTenantCount(context); + Integer result = databaseOperate.queryOne(mapperResult.getSql(), mapperResult.getParamList().toArray(), + Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); } @@ -780,10 +810,10 @@ public List getTenantIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getTenantIdList(from, pageSize); + MapperResult mapperResult = configInfoMapper.getTenantIdList(new MapperContext(from, pageSize)); - Page> pageList = helper.fetchPageLimit(sql, new Object[] {}, page, pageSize, - MAP_ROW_MAPPER); + Page> pageList = helper.fetchPageLimit(mapperResult.getSql(), + mapperResult.getParamList().toArray(), page, pageSize, MAP_ROW_MAPPER); return pageList.getPageItems().stream().map(map -> String.valueOf(map.get("TENANT_ID"))) .collect(Collectors.toList()); } @@ -795,10 +825,10 @@ public List getGroupIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getGroupIdList(from, pageSize); + MapperResult mapperResult = configInfoMapper.getGroupIdList(new MapperContext(from, pageSize)); - Page> pageList = helper.fetchPageLimit(sql, new Object[] {}, page, pageSize, - MAP_ROW_MAPPER); + Page> pageList = helper.fetchPageLimit(mapperResult.getSql(), + mapperResult.getParamList().toArray(), page, pageSize, MAP_ROW_MAPPER); return pageList.getPageItems().stream().map(map -> String.valueOf(map.get("GROUP_ID"))) .collect(Collectors.toList()); } @@ -810,12 +840,13 @@ public Page findAllConfigInfo(final int pageNo, final int pageSize, ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, - new Object[] {generateLikeArgument(tenantTmp), (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -824,7 +855,9 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String select = configInfoMapper.findAllConfigKey((pageNo - 1) * pageSize, pageSize); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + final MapperResult mapperResult = configInfoMapper.findAllConfigKey(context); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -841,8 +874,7 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi page.setPagesAvailable(pageCount); page.setTotalCount(totalCount); - List result = databaseOperate.queryMany(select, new Object[] {generateLikeArgument(tenantTmp)}, - // new Object[0], + List result = databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_KEY_ROW_MAPPER); for (ConfigKey item : result) { @@ -855,9 +887,12 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String select = configInfoMapper.findAllConfigInfoFragment(0, pageSize); + MapperContext context = new MapperContext(0, pageSize); + context.putWhereParameter(FieldConstant.ID, lastMaxId); + MapperResult select = configInfoMapper.findAllConfigInfoFragment(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(select, new Object[] {lastMaxId}, 1, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(select.getSql(), select.getParamList().toArray(), 1, pageSize, + CONFIG_INFO_WRAPPER_ROW_MAPPER); } @@ -962,45 +997,40 @@ 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 = null; - String sqlFetchRows = null; - Map paramsMap = new HashMap<>(16); + MapperResult sqlCountRows; + MapperResult sqlFetchRows; + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); - List params = new ArrayList<>(); - params.add(generateLikeArgument(tenantTmp)); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - params.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, tagArr.length); - sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(paramsMap, tagArr.length, startRow, - pageSize); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); - sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(context); } PaginationHelper helper = createPaginationHelper(); - Page page = helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), @@ -1017,30 +1047,24 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); - String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); + MapperResult sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, - CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @@ -1048,53 +1072,50 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p public List findChangeConfig(final Timestamp startTime, final Timestamp endTime) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - List> list = databaseOperate.queryMany(configInfoMapper.findChangeConfig(), - new Object[] {startTime, endTime}); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + MapperResult mapperResult = configInfoMapper.findChangeConfig(context); + List> list = databaseOperate.queryMany(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertChangeConfig(list); } + @SuppressWarnings("checkstyle:WhitespaceAfter") @Override public Page findChangeConfig(final String dataId, final String group, final String tenant, 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; - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } - if (!StringUtils.isBlank(tenantTmp)) { - params.add(tenantTmp); - paramsMap.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT, tenantTmp); } - if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (startTime != null) { - params.add(startTime); + context.putWhereParameter(FieldConstant.START_TIME, startTime); } if (endTime != null) { - params.add(endTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); } - final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); - String sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, - pageSize, lastMaxId); + MapperResult sqlCountRows = configInfoMapper.findChangeConfigCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, - CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @@ -1113,13 +1134,16 @@ public List findConfigInfosByIds(final String ids) { return null; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return databaseOperate.queryMany(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult mapperResult = configInfoMapper.findConfigInfosByIds(context); + return databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_INFO_ROW_MAPPER); } @@ -1234,10 +1258,11 @@ public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows((pageNo - 1) * pageSize, pageSize); + MapperResult sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows( + new MapperContext((pageNo - 1) * pageSize, pageSize)); PaginationHelper helper = createPaginationHelper(); - Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, - pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), new Object[] {}, + pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); return page.getPageItems(); } @@ -1258,30 +1283,27 @@ public ConfigInfoWrapper queryConfigInfo(final String dataId, final String group 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; - Map params = new HashMap<>(16); - List paramList = new ArrayList<>(); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); if (!CollectionUtils.isEmpty(ids)) { - paramList.addAll(ids); + context.putWhereParameter(FieldConstant.IDS, ids); } else { - paramList.add(tenantTmp); - params.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (!StringUtils.isBlank(dataId)) { - paramList.add(generateLikeArgument(dataId)); - params.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - params.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - params.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); - return databaseOperate.queryMany(sql, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); + + MapperResult mapperResult = configInfoMapper.findAllConfigInfo4Export(context); + return databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_ALL_INFO_ROW_MAPPER); } @Override @@ -1304,11 +1326,12 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, - pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImpl.java index 181520ab314..c3811029314 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoTagPersistServiceImpl.java @@ -31,8 +31,11 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.context.annotation.Conditional; import org.springframework.stereotype.Service; @@ -188,12 +191,24 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - 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()}; + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.TAG_ID, tagTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + final MapperResult mapperResult = configInfoTagMapper.updateConfigInfo4TagCas(context); EmbeddedStorageContextUtils.onModifyConfigTagInfo(configInfo, tagTmp, srcIp, time); - EmbeddedStorageContextUtils.addSqlContext(sql, args); + EmbeddedStorageContextUtils.addSqlContext(mapperResult.getSql(), mapperResult.getParamList()); return databaseOperate.blockUpdate(); } finally { @@ -234,11 +249,12 @@ public Page findAllConfigInfoTagForDumpAll(final int pageN ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); String sqlCountRows = configInfoTagMapper.count(null); - String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, pageSize, - CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java index 894f36b17fe..a297de73dc8 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedHistoryConfigInfoPersistServiceImpl.java @@ -31,8 +31,11 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.context.annotation.Conditional; import org.springframework.stereotype.Service; @@ -122,17 +125,24 @@ public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInf public void removeConfigHistory(final Timestamp startTime, final int limitSize) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.removeConfigHistory(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + MapperResult mapperResult = historyConfigInfoMapper.removeConfigHistory(context); PaginationHelper helper = createPaginationHelper(); - helper.updateLimit(sql, new Object[] {startTime, limitSize}); + helper.updateLimit(mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override public List findDeletedConfig(final Timestamp startTime, final Timestamp endTime) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - List> list = databaseOperate.queryMany(historyConfigInfoMapper.findDeletedConfig(), - new Object[] {startTime, endTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + MapperResult mapperResult = historyConfigInfoMapper.findDeletedConfig(context); + List> list = databaseOperate.queryMany(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertDeletedConfig(list); } @@ -144,12 +154,18 @@ public Page findConfigHistory(String dataId, String group, St HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + String sqlCountRows = historyConfigInfoMapper.count(Arrays.asList("data_id", "group_id", "tenant_id")); - String sqlFetchRows = historyConfigInfoMapper.pageFindConfigHistoryFetchRows(pageNo, pageSize); + MapperResult sqlFetchRows = historyConfigInfoMapper.pageFindConfigHistoryFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows, new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, - HISTORY_LIST_ROW_MAPPER); + return helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, HISTORY_LIST_ROW_MAPPER); } @Override @@ -167,16 +183,22 @@ public ConfigHistoryInfo detailConfigHistory(Long nid) { public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); - return databaseOperate.queryOne(sqlFetchRows, new Object[] {id}, HISTORY_DETAIL_ROW_MAPPER); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, id); + MapperResult sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(context); + return databaseOperate.queryOne(sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + HISTORY_DETAIL_ROW_MAPPER); } @Override public int findConfigHistoryCountByTime(final Timestamp startTime) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); - Integer result = databaseOperate.queryOne(sql, new Object[] {startTime}, Integer.class); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + MapperResult sqlFetchRows = historyConfigInfoMapper.findConfigHistoryCountByTime(context); + Integer result = databaseOperate.queryOne(sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + Integer.class); if (result == null) { throw new IllegalArgumentException("findConfigHistoryCountByTime error"); } 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 c1f06a2a41d..ef59ed79c1b 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 @@ -19,11 +19,11 @@ 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.plugin.datasource.model.MapperResult; +import org.springframework.jdbc.core.RowMapper; import java.util.List; -import org.springframework.jdbc.core.RowMapper; - /** * Pagination Utils For Apache Derby. * @@ -55,7 +55,7 @@ public Page fetchPage(final String sqlCountRows, final String sqlFetchRows, f final int pageNo, final int pageSize, final RowMapper rowMapper) { return fetchPage(sqlCountRows, sqlFetchRows, args, pageNo, pageSize, null, rowMapper); } - + @Override public Page fetchPage(final String sqlCountRows, final String sqlFetchRows, final Object[] args, final int pageNo, final int pageSize, final Long lastMaxId, final RowMapper rowMapper) { @@ -91,7 +91,7 @@ public Page fetchPage(final String sqlCountRows, final String sqlFetchRows, f } return page; } - + @Override public Page fetchPageLimit(final String sqlCountRows, final String sqlFetchRows, final Object[] args, final int pageNo, final int pageSize, final RowMapper rowMapper) { @@ -126,7 +126,7 @@ public Page fetchPageLimit(final String sqlCountRows, final String sqlFetchRo } return page; } - + @Override public Page fetchPageLimit(final String sqlCountRows, final Object[] args1, final String sqlFetchRows, final Object[] args2, final int pageNo, final int pageSize, final RowMapper rowMapper) { @@ -161,7 +161,7 @@ public Page fetchPageLimit(final String sqlCountRows, final Object[] args1, f } return page; } - + @Override public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, final int pageNo, final int pageSize, final RowMapper rowMapper) { @@ -177,7 +177,14 @@ public Page fetchPageLimit(final String sqlFetchRows, final Object[] args, fi } return page; } - + + @Override + public Page fetchPageLimit(MapperResult countMapperResult, MapperResult mapperResult, int pageNo, int pageSize, + RowMapper rowMapper) { + return fetchPageLimit(countMapperResult.getSql(), countMapperResult.getParamList().toArray(), + mapperResult.getSql(), mapperResult.getParamList().toArray(), pageNo, pageSize, rowMapper); + } + @Override public void updateLimit(final String sql, final Object[] args) { EmbeddedStorageContextUtils.addSqlContext(sql, args); 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 92034808239..73b4a1315ff 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 @@ -50,6 +50,7 @@ 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.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; @@ -155,8 +156,8 @@ public class EmbeddedStoragePersistServiceImpl implements PersistService { public EmbeddedStoragePersistServiceImpl(DatabaseOperate databaseOperate, IdGeneratorManager idGeneratorManager) { this.databaseOperate = databaseOperate; this.idGeneratorManager = idGeneratorManager; - Boolean isDataSourceLogEnable = EnvUtil - .getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, false); + Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, + false); NotifyCenter.registerToSharePublisher(DerbyImportEvent.class); mapperManager = MapperManager.instance(isDataSourceLogEnable); } @@ -167,10 +168,9 @@ public EmbeddedStoragePersistServiceImpl(DatabaseOperate databaseOperate, IdGene @PostConstruct public void init() { dataSourceService = DynamicDataSource.getInstance().getDataSource(); - idGeneratorManager - .register(RESOURCE_CONFIG_INFO_ID, RESOURCE_CONFIG_HISTORY_ID, RESOURCE_CONFIG_TAG_RELATION_ID, - RESOURCE_APP_CONFIGDATA_RELATION_SUBS, RESOURCE_CONFIG_BETA_ID, RESOURCE_NAMESPACE_ID, - RESOURCE_USER_ID, RESOURCE_ROLE_ID, RESOURCE_PERMISSIONS_ID); + idGeneratorManager.register(RESOURCE_CONFIG_INFO_ID, RESOURCE_CONFIG_HISTORY_ID, + RESOURCE_CONFIG_TAG_RELATION_ID, RESOURCE_APP_CONFIGDATA_RELATION_SUBS, RESOURCE_CONFIG_BETA_ID, + RESOURCE_NAMESPACE_ID, RESOURCE_USER_ID, RESOURCE_ROLE_ID, RESOURCE_PERMISSIONS_ID); } public boolean checkMasterWritable() { @@ -256,9 +256,9 @@ public void addConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String src String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); - final String sql = configInfoBetaMapper.insert(Arrays - .asList("data_id", "group_id", "tenant_id", "app_name", "content", "md5", "beta_ips", "src_ip", - "src_user", "gmt_create", "gmt_modified", "encrypted_data_key")); + final String sql = configInfoBetaMapper.insert( + Arrays.asList("data_id", "group_id", "tenant_id", "app_name", "content", "md5", "beta_ips", + "src_ip", "src_user", "gmt_create", "gmt_modified", "encrypted_data_key")); final Object[] args = new Object[] {configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, time, encryptedDataKey}; @@ -284,8 +284,8 @@ public void addConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp, S String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - final String sql = configInfoTagMapper.insert(Arrays - .asList("data_id", "group_id", "tenant_id", "tag_id", "app_name", "content", "md5", "src_ip", + final String sql = configInfoTagMapper.insert( + Arrays.asList("data_id", "group_id", "tenant_id", "tag_id", "app_name", "content", "md5", "src_ip", "src_user", "gmt_create", "gmt_modified")); final Object[] args = new Object[] {configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, appNameTmp, configInfo.getContent(), md5, srcIp, srcUser, time, time}; @@ -388,8 +388,8 @@ public void updateConfigInfo4Beta(ConfigInfo configInfo, String betaIps, String String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); - final String sql = configInfoBetaMapper.update(Arrays - .asList("content", "md5", "beta_ips", "src_ip", "src_user", "gmt_modified", "app_name", + final String sql = configInfoBetaMapper.update( + Arrays.asList("content", "md5", "beta_ips", "src_ip", "src_user", "gmt_modified", "app_name", "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {configInfo.getContent(), md5, betaIps, srcIp, srcUser, time, appNameTmp, @@ -413,26 +413,26 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S configInfo.setTenant(tenantTmp); try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - + ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); - + MapperContext context = new MapperContext(); - context.putUpdateParameter("content", configInfo.getContent()); - context.putUpdateParameter("md5", md5); - context.putUpdateParameter("beta_ips", betaIps); - context.putUpdateParameter("src_ip", srcIp); - context.putUpdateParameter("src_user", srcUser); - context.putUpdateParameter("gmt_modified", time); - context.putUpdateParameter("app_name", appNameTmp); - - context.putWhereParameter("data_id", configInfo.getDataId()); - context.putWhereParameter("group_id", configInfo.getGroup()); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("md5", configInfo.getMd5()); - + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + MapperResult mapperResult = configInfoBetaMapper.updateConfigInfo4BetaCas(context); - + final String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); final Object[] args = paramList.toArray(); @@ -457,12 +457,12 @@ public void updateConfigInfo4Tag(ConfigInfo configInfo, String tag, String srcIp try { String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); - + ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - final String sql = configInfoTagMapper - .update(Arrays.asList("content", "md5", "src_ip", "src_user", "gmt_modified", "app_name"), - Arrays.asList("data_id", "group_id", "tenant_id", "tag_id")); + final String sql = configInfoTagMapper.update( + Arrays.asList("content", "md5", "src_ip", "src_user", "gmt_modified", "app_name"), + Arrays.asList("data_id", "group_id", "tenant_id", "tag_id")); final Object[] args = new Object[] {configInfo.getContent(), md5, srcIp, srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp}; @@ -488,12 +488,24 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - 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()}; + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.TAG_ID, tagTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + final MapperResult mapperResult = configInfoTagMapper.updateConfigInfo4TagCas(context); EmbeddedStorageContextUtils.onModifyConfigTagInfo(configInfo, tagTmp, srcIp, time); - EmbeddedStorageContextUtils.addSqlContext(sql, args); + EmbeddedStorageContextUtils.addSqlContext(mapperResult.getSql(), mapperResult.getParamList()); return databaseOperate.blockUpdate(); } finally { @@ -548,9 +560,10 @@ 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 { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper - .update(Arrays.asList("md5"), Arrays.asList("data_id", "group_id", "tenant_id", "gmt_modified")); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.update(Arrays.asList("md5"), + Arrays.asList("data_id", "group_id", "tenant_id", "gmt_modified")); final Object[] args = new Object[] {md5, dataId, group, tenantTmp, lastTime}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -599,8 +612,8 @@ public boolean insertOrUpdateCas(String srcIp, String srcUser, ConfigInfo config private boolean isAlreadyExist(SubInfo subInfo) { final String sql = "SELECT * FROM app_configdata_relation_subs WHERE dara_id=? AND group_id=? AND app_name=?"; - Map obj = databaseOperate - .queryOne(sql, new Object[] {subInfo.getDataId(), subInfo.getGroup(), subInfo.getAppName()}, Map.class); + Map obj = databaseOperate.queryOne(sql, + new Object[] {subInfo.getDataId(), subInfo.getGroup(), subInfo.getAppName()}, Map.class); return obj != null; } @@ -665,13 +678,13 @@ public void removeConfigInfo4Beta(final String dataId, final String group, final ConfigInfo configInfo = findConfigInfo4Beta(dataId, group, tenant); if (configInfo != null) { try { - ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO_BETA); + ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); final String sql = configInfoBetaMapper.delete(Arrays.asList("data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {dataId, group, tenantTmp}; - EmbeddedStorageContextUtils - .onDeleteConfigBetaInfo(tenantTmp, group, dataId, System.currentTimeMillis()); + EmbeddedStorageContextUtils.onDeleteConfigBetaInfo(tenantTmp, group, dataId, + System.currentTimeMillis()); EmbeddedStorageContextUtils.addSqlContext(sql, args); boolean result = databaseOperate.update(EmbeddedStorageContextUtils.getCurrentSqlContext()); @@ -692,18 +705,18 @@ public boolean addAggrConfigInfo(final String dataId, final String group, String String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; String contentTmp = StringUtils.isBlank(content) ? StringUtils.EMPTY : content; final Timestamp now = new Timestamp(System.currentTimeMillis()); - + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); final String select = configInfoAggrMapper.select(Collections.singletonList("content"), Arrays.asList("data_id", "group_id", "tenant_id", "datum_id")); - final String insert = configInfoAggrMapper.insert(Arrays - .asList("data_id", "group_id", "tenant_id", "datum_id", "app_name", "content", "gmt_modified")); + final String insert = configInfoAggrMapper.insert( + Arrays.asList("data_id", "group_id", "tenant_id", "datum_id", "app_name", "content", "gmt_modified")); final String update = configInfoAggrMapper.update(Arrays.asList("content", "gmt_modified"), Arrays.asList("data_id", "group_id", "tenant_id", "datum_id")); - String dbContent = databaseOperate - .queryOne(select, new Object[] {dataId, group, tenantTmp, datumId}, String.class); + String dbContent = databaseOperate.queryOne(select, new Object[] {dataId, group, tenantTmp, datumId}, + String.class); if (Objects.isNull(dbContent)) { final Object[] args = new Object[] {dataId, group, tenantTmp, datumId, appNameTmp, contentTmp, now}; @@ -728,7 +741,7 @@ 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; - + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); final String sql = configInfoAggrMapper.delete(Arrays.asList("data_id", "group_id", "tenant_id", "datum_id")); @@ -748,7 +761,7 @@ 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; - + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); final String sql = configInfoAggrMapper.delete(Arrays.asList("data_id", "group_id", "tenant_id")); @@ -771,12 +784,12 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.batchRemoveAggr(context); String sql = mapperResult.getSql(); @@ -798,19 +811,25 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St @Override public void removeConfigHistory(final Timestamp startTime, final int limitSize) { - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.removeConfigHistory(); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, startTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + MapperResult mapperResult = historyConfigInfoMapper.removeConfigHistory(context); PaginationHelper helper = createPaginationHelper(); - helper.updateLimit(sql, new Object[] {startTime, limitSize}); + helper.updateLimit(mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override public int findConfigHistoryCountByTime(final Timestamp startTime) { - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); - Integer result = databaseOperate.queryOne(sql, new Object[] {startTime}, Integer.class); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + MapperResult sqlFetchRows = historyConfigInfoMapper.findConfigHistoryCountByTime(context); + Integer result = databaseOperate.queryOne(sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); } @@ -819,9 +838,10 @@ public int findConfigHistoryCountByTime(final Timestamp startTime) { @Override public long findConfigMaxId() { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findConfigMaxId(); - return Optional.ofNullable(databaseOperate.queryOne(sql, Long.class)).orElse(0L); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperResult mapperResult = configInfoMapper.findConfigMaxId(null); + return Optional.ofNullable(databaseOperate.queryOne(mapperResult.getSql(), Long.class)).orElse(0L); } @Override @@ -855,8 +875,8 @@ public boolean replaceAggr(final String dataId, final String group, final String String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - final String sql = configInfoAggrMapper.insert(Arrays - .asList("data_id", "group_id", "tenant_id", "datum_id", "app_name", "content", "gmt_modified")); + final String sql = configInfoAggrMapper.insert( + Arrays.asList("data_id", "group_id", "tenant_id", "datum_id", "app_name", "content", "gmt_modified")); for (Entry datumEntry : datumMap.entrySet()) { final Object[] args = new Object[] {dataId, group, tenantTmp, datumEntry.getKey(), appNameTmp, datumEntry.getValue(), new Timestamp(System.currentTimeMillis())}; @@ -877,9 +897,10 @@ public boolean replaceAggr(final String dataId, final String group, final String @Override public List findAllDataIdAndGroup() { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllDataIdAndGroup(); - return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_ROW_MAPPER); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperResult mapperResult = configInfoMapper.findAllDataIdAndGroup(null); + return databaseOperate.queryMany(mapperResult.getSql(), EMPTY_ARRAY, CONFIG_INFO_ROW_MAPPER); } @Override @@ -887,12 +908,12 @@ public ConfigInfoBetaWrapper findConfigInfo4Beta(final String dataId, final Stri String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); - final String sql = configInfoBetaMapper.select(Arrays - .asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "beta_ips", + final String sql = configInfoBetaMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "beta_ips", "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); - return databaseOperate - .queryOne(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_BETA_WRAPPER_ROW_MAPPER); + return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, + CONFIG_INFO_BETA_WRAPPER_ROW_MAPPER); } @@ -901,40 +922,44 @@ 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(); - ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - final String sql = configInfoTagMapper - .select(Arrays.asList("id", "data_id", "group_id", "tenant_id", "tag_id", "app_name", "content"), - Arrays.asList("data_id", "group_id", "tenant_id", "tag_id")); + ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_TAG); + final String sql = configInfoTagMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "tag_id", "app_name", "content"), + Arrays.asList("data_id", "group_id", "tenant_id", "tag_id")); - return databaseOperate - .queryOne(sql, new Object[] {dataId, group, tenantTmp, tagTmp}, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); + return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp, tagTmp}, + CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } @Override public ConfigInfoBase findConfigInfoBase(final String dataId, final String group) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); final String sql = configInfoMapper.select(Arrays.asList("id", "data_id", "group_id", "content"), Arrays.asList("data_id", "group_id", "tenant_id")); - return databaseOperate - .queryOne(sql, new Object[] {dataId, group, StringUtils.EMPTY}, CONFIG_INFO_BASE_ROW_MAPPER); + return databaseOperate.queryOne(sql, new Object[] {dataId, group, StringUtils.EMPTY}, + CONFIG_INFO_BASE_ROW_MAPPER); } @Override public ConfigInfo findConfigInfo(long id) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper - .select(Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content"), - Collections.singletonList("id")); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content"), + Collections.singletonList("id")); 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; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.select(Arrays - .asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "type", + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "type", "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {dataId, group, tenantTmp}; return databaseOperate.queryOne(sql, args, CONFIG_INFO_WRAPPER_ROW_MAPPER); @@ -947,44 +972,45 @@ 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 sql = null; - String sqlCount = null; - List paramList = new ArrayList<>(); - paramList.add(tenantTmp); - Map paramsMap = new HashMap<>(16); + MapperResult sql; + MapperResult sqlCount; + + final MapperContext context = new MapperContext(); + + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (StringUtils.isNotBlank(dataId)) { - paramList.add(dataId); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } - final int startRow = (pageNo - 1) * pageSize; + + context.setStartRow((pageNo - 1) * pageSize); + context.setPageSize(pageSize); + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - paramList.addAll(Arrays.asList(tagArr)); - ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_TAGS_RELATION); - sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, tagArr.length); - sql = configTagsRelationMapper - .findConfigInfo4PageFetchRows(paramsMap, tagArr.length, startRow, pageSize); + context.putWhereParameter(FieldConstant.TAG_ARR, Arrays.asList(tagArr)); + ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(context); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(context); } else { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); - sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(context); + sql = configInfoMapper.findConfigInfo4PageFetchRows(context); } PaginationHelper helper = createPaginationHelper(); - Page page = helper - .fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCount, sql, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { - Pair pair = EncryptionHandler - .decryptHandler(configInfo.getDataId(), configInfo.getEncryptedDataKey(), configInfo.getContent()); + Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), + configInfo.getEncryptedDataKey(), configInfo.getContent()); configInfo.setContent(pair.getSecond()); } @@ -995,12 +1021,17 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize public Page findConfigInfoByApp(final int pageNo, final int pageSize, final String tenant, final String appName) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - PaginationHelper helper = createPaginationHelper(); final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), - configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), - new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + + PaginationHelper helper = createPaginationHelper(); + MapperResult countRows = configInfoMapper.findConfigInfoByAppCountRows(context); + MapperResult fetchRows = configInfoMapper.findConfigInfoByAppFetchRows(context); + return helper.fetchPageLimit(countRows, fetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1008,15 +1039,22 @@ public Page findConfigInfoByApp(final int pageNo, final int pageSize public Page findConfigInfoBaseByGroup(final int pageNo, final int pageSize, final String group) { PaginationHelper helper = createPaginationHelper(); final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), - configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), - new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, StringUtils.EMPTY); + MapperResult mapperResult = configInfoMapper.findConfigInfoBaseByGroupFetchRows(context); + + return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), mapperResult.getSql(), + mapperResult.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @Override public int configInfoCount() { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); String sql = configInfoMapper.count(null); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { @@ -1027,9 +1065,13 @@ public int configInfoCount() { @Override public int configInfoCount(String tenant) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.configInfoLikeTenantCount(); - Integer result = databaseOperate.queryOne(sql, new Object[] {tenant}, Integer.class); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenant); + MapperResult mapperResult = configInfoMapper.configInfoLikeTenantCount(context); + Integer result = databaseOperate.queryOne(mapperResult.getSql(), mapperResult.getParamList().toArray(), + Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); } @@ -1038,7 +1080,8 @@ public int configInfoCount(String tenant) { @Override public int configInfoBetaCount() { - ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); + ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_BETA); String sql = configInfoBetaMapper.count(null); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { @@ -1049,7 +1092,8 @@ public int configInfoBetaCount() { @Override public int configInfoTagCount() { - ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); + ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_TAG); String sql = configInfoTagMapper.count(null); Integer result = databaseOperate.queryOne(sql, Integer.class); if (result == null) { @@ -1062,12 +1106,13 @@ public int configInfoTagCount() { public List getTenantIdList(int page, int pageSize) { PaginationHelper> helper = createPaginationHelper(); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getTenantIdList(from, pageSize); + MapperResult mapperResult = configInfoMapper.getTenantIdList(new MapperContext(from, pageSize)); - Page> pageList = helper - .fetchPageLimit(sql, new Object[] {}, page, pageSize, MAP_ROW_MAPPER); + Page> pageList = helper.fetchPageLimit(mapperResult.getSql(), + mapperResult.getParamList().toArray(), page, pageSize, MAP_ROW_MAPPER); return pageList.getPageItems().stream().map(map -> String.valueOf(map.get("TENANT_ID"))) .collect(Collectors.toList()); } @@ -1076,12 +1121,13 @@ public List getTenantIdList(int page, int pageSize) { public List getGroupIdList(int page, int pageSize) { PaginationHelper> helper = createPaginationHelper(); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getGroupIdList(from, pageSize); + MapperResult mapperResult = configInfoMapper.getGroupIdList(new MapperContext(from, pageSize)); - Page> pageList = helper - .fetchPageLimit(sql, new Object[] {}, page, pageSize, MAP_ROW_MAPPER); + Page> pageList = helper.fetchPageLimit(mapperResult.getSql(), + mapperResult.getParamList().toArray(), page, pageSize, MAP_ROW_MAPPER); return pageList.getPageItems().stream().map(map -> String.valueOf(map.get("GROUP_ID"))) .collect(Collectors.toList()); } @@ -1089,7 +1135,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; - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); String sql = configInfoAggrMapper.count(Arrays.asList("data_id", "group_id", "tenant_id")); Integer result = databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, Integer.class); if (result == null) { @@ -1104,20 +1151,21 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< return 0; } final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context); String sql = mapperResult.getSql(); Object[] args = mapperResult.getParamList().toArray(); - + Integer result = databaseOperate.queryOne(sql, args, Integer.class); if (result == null) { throw new IllegalArgumentException("aggrConfigInfoCount error"); @@ -1129,22 +1177,28 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< public Page findAllConfigInfo(final int pageNo, final int pageSize, final String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, - new Object[] {generateLikeArgument(tenantTmp), (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_ROW_MAPPER); } @Override public Page findAllConfigKey(final int pageNo, final int pageSize, final String tenant) { final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String select = configInfoMapper.findAllConfigKey((pageNo - 1) * pageSize, pageSize); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + final MapperResult mapperResult = configInfoMapper.findAllConfigKey(context); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -1161,10 +1215,8 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi page.setPagesAvailable(pageCount); page.setTotalCount(totalCount); - List result = databaseOperate - .queryMany(select, new Object[] {generateLikeArgument(tenantTmp)}, - // new Object[0], - CONFIG_KEY_ROW_MAPPER); + List result = databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_KEY_ROW_MAPPER); for (ConfigKey item : result) { page.getPageItems().add(item); @@ -1175,23 +1227,27 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi @Override public Page findAllConfigInfoBase(final int pageNo, final int pageSize) { final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); - return helper - .fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, pageNo, - pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @Override public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String select = configInfoMapper.findAllConfigInfoFragment(0, pageSize); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(0, pageSize); + context.putWhereParameter(FieldConstant.ID, lastMaxId); + MapperResult select = configInfoMapper.findAllConfigInfoFragment(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(select, new Object[] {lastMaxId}, 1, pageSize, + return helper.fetchPageLimit(select.getSql(), select.getParamList().toArray(), 1, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @@ -1199,15 +1255,15 @@ public Page findAllConfigInfoFragment(final long lastMaxId, f @Override public Page findAllConfigInfoBetaForDumpAll(final int pageNo, final int pageSize) { final int startRow = (pageNo - 1) * pageSize; - ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); + ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_BETA); String sqlCountRows = configInfoBetaMapper.count(null); - + MapperContext context = new MapperContext(); context.setStartRow(startRow); context.setPageSize(pageSize); - MapperResult mapperResult = configInfoBetaMapper - .findAllConfigInfoBetaForDumpAllFetchRows(context); + MapperResult mapperResult = configInfoBetaMapper.findAllConfigInfoBetaForDumpAllFetchRows(context); String sqlFetchRows = mapperResult.getSql(); PaginationHelper helper = createPaginationHelper(); @@ -1218,13 +1274,15 @@ public Page findAllConfigInfoBetaForDumpAll(final int pag @Override public Page findAllConfigInfoTagForDumpAll(final int pageNo, final int pageSize) { final int startRow = (pageNo - 1) * pageSize; - ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); + ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_TAG); String sqlCountRows = configInfoTagMapper.count(null); - String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, pageSize, - CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } @@ -1317,9 +1375,8 @@ public Page findConfigInfoLike(final int pageNo, final int pageSize, } } PaginationHelper helper = createPaginationHelper(); - return helper - .fetchPage(sqlCountRows + where.toString(), sqlFetchRows + where.toString(), params.toArray(), pageNo, - pageSize, CONFIG_INFO_ROW_MAPPER); + return helper.fetchPage(sqlCountRows + where.toString(), sqlFetchRows + where.toString(), params.toArray(), + pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } @@ -1330,48 +1387,44 @@ 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 = null; - String sqlFetchRows = null; - Map paramsMap = new HashMap<>(16); - - List params = new ArrayList<>(); - params.add(generateLikeArgument(tenantTmp)); + MapperResult sqlCountRows; + MapperResult sqlFetchRows; + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - params.addAll(Arrays.asList(tagArr)); - ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_TAGS_RELATION); - sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, tagArr.length); - sqlFetchRows = configTagsRelationMapper - .findConfigInfoLike4PageFetchRows(paramsMap, tagArr.length, startRow, pageSize); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); + ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(context); } else { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); - sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(context); } PaginationHelper helper = createPaginationHelper(); - Page page = helper - .fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, + CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { - Pair pair = EncryptionHandler - .decryptHandler(configInfo.getDataId(), configInfo.getEncryptedDataKey(), configInfo.getContent()); + Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), + configInfo.getEncryptedDataKey(), configInfo.getContent()); configInfo.setContent(pair.getSecond()); } return page; @@ -1384,55 +1437,52 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); - String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperResult sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper - .fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } @Override public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, String tenant, String datumId) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper - .select(Arrays.asList("id", "data_id", "group_id", "tenant_id", "datum_id", "app_name", "content"), - Arrays.asList("data_id", "group_id", "tenant_id", "datum_id")); + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); + String sql = configInfoAggrMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "datum_id", "app_name", "content"), + Arrays.asList("data_id", "group_id", "tenant_id", "datum_id")); - return databaseOperate - .queryOne(sql, new Object[] {dataId, group, tenantTmp, datumId}, CONFIG_INFO_AGGR_ROW_MAPPER); + return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp, datumId}, + CONFIG_INFO_AGGR_ROW_MAPPER); } @Override public List findConfigInfoAggr(String dataId, String group, String tenant) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); - + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); Object[] args = mapperResult.getParamList().toArray(); @@ -1444,24 +1494,25 @@ 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; - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); final int startRow = (pageNo - 1) * pageSize; - final String sqlCountRows = configInfoAggrMapper - .select(Arrays.asList("count(*)"), Arrays.asList("data_id", "group_id", "tenant_id")); + final String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"), + Arrays.asList("data_id", "group_id", "tenant_id")); MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context); String sqlFetchRows = mapperResult.getSql(); Object[] sqlFethcArgs = mapperResult.getParamList().toArray(); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, - sqlFethcArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, sqlFethcArgs, + pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); } @Override @@ -1553,35 +1604,43 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p } } PaginationHelper helper = createPaginationHelper(); - return helper - .fetchPage(sqlCountRows + where.toString(), sqlFetchRows + where.toString(), params.toArray(), pageNo, - pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); + return helper.fetchPage(sqlCountRows + where.toString(), sqlFetchRows + where.toString(), params.toArray(), + pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER); } @Override public List findAllAggrGroup() { - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper.findAllAggrGroupByDistinct(); + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); + MapperResult mapperResult = configInfoAggrMapper.findAllAggrGroupByDistinct(null); - return databaseOperate.queryMany(sql, EMPTY_ARRAY, CONFIG_INFO_CHANGED_ROW_MAPPER); + return databaseOperate.queryMany(mapperResult.getSql(), EMPTY_ARRAY, CONFIG_INFO_CHANGED_ROW_MAPPER); } @Override public List findDatumIdByContent(String dataId, String groupId, String content) { - ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper - .select(Collections.singletonList("datum_id"), Arrays.asList("data_id", "group_id", "content")); + ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_AGGR); + String sql = configInfoAggrMapper.select(Collections.singletonList("datum_id"), + Arrays.asList("data_id", "group_id", "content")); return databaseOperate.queryMany(sql, new Object[] {dataId, groupId, content}, String.class); } @Override public List findChangeConfig(final Timestamp startTime, final Timestamp endTime) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - List> list = databaseOperate - .queryMany(configInfoMapper.findChangeConfig(), new Object[] {startTime, endTime}); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + + MapperResult mapperResult = configInfoMapper.findChangeConfig(context); + List> list = databaseOperate.queryMany(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertChangeConfig(list); } @@ -1591,50 +1650,49 @@ 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; - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } - + if (!StringUtils.isBlank(tenantTmp)) { - params.add(tenantTmp); - paramsMap.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT, tenantTmp); } - + if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (startTime != null) { - params.add(startTime); + context.putWhereParameter(FieldConstant.START_TIME, startTime); } if (endTime != null) { - params.add(endTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); } - final int startRow = (pageNo - 1) * pageSize; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); - String sqlFetchRows = configInfoMapper - .findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, pageSize, lastMaxId); + + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperResult sqlCountRows = configInfoMapper.findChangeConfigCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, - CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @Override public List findDeletedConfig(final Timestamp startTime, final Timestamp endTime) { - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - List> list = databaseOperate - .queryMany(historyConfigInfoMapper.findDeletedConfig(), new Object[] {startTime, endTime}); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + MapperResult mapperResult = historyConfigInfoMapper.findDeletedConfig(context); + List> list = databaseOperate.queryMany(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertDeletedConfig(list); } @@ -1654,10 +1712,11 @@ 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(); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.insert(Arrays - .asList("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", + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.insert( + Arrays.asList("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")); final Object[] args = new Object[] {id, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, time, desc, use, effect, type, schema, @@ -1668,8 +1727,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) { - ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_TAGS_RELATION); + ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); final String sql = configTagsRelationMapper.insert( Arrays.asList("id", "tag_name", "tag_type", "data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {configId, tagName, StringUtils.EMPTY, dataId, group, tenant}; @@ -1688,8 +1747,8 @@ public void addConfigTagsRelation(long configId, String configTags, String dataI @Override public void removeTagByIdAtomic(long id) { - ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_TAGS_RELATION); + ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); final String sql = configTagsRelationMapper.delete(Arrays.asList("id")); final Object[] args = new Object[] {id}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -1697,8 +1756,8 @@ public void removeTagByIdAtomic(long id) { @Override public List selectTagByConfig(String dataId, String group, String tenant) { - ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_TAGS_RELATION); + ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); String sql = configTagsRelationMapper.select(Arrays.asList("tag_name"), Arrays.asList("data_id", "group_id", "tenant_id")); return databaseOperate.queryMany(sql, new Object[] {dataId, group, tenant}, String.class); @@ -1708,7 +1767,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; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); final String sql = configInfoMapper.delete(Arrays.asList("data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {dataId, group, tenantTmp}; @@ -1721,13 +1781,16 @@ public void removeConfigInfoByIdsAtomic(final String ids) { return; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); - EmbeddedStorageContextUtils.addSqlContext(sql.toString(), paramList.toArray()); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult result = configInfoMapper.removeConfigInfoByIdsAtomic(context); + EmbeddedStorageContextUtils.addSqlContext(result.getSql(), result.getParamList()); } @Override @@ -1736,7 +1799,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; - ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); + ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO_TAG); final String sql = configInfoTagMapper.delete(Arrays.asList("data_id", "group_id", "tenant_id", "tag_id")); final Object[] args = new Object[] {dataId, group, tenantTmp, tagTmp}; @@ -1765,10 +1829,12 @@ public void updateConfigInfoAtomic(final ConfigInfo configInfo, final String src final String encryptedDataKey = configInfo.getEncryptedDataKey() == null ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.update(Arrays - .asList("content", "md5", "src_ip", "src_user", "gmt_modified", "app_name", "c_desc", "c_use", "effect", - "type", "c_schema", "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.update( + Arrays.asList("content", "md5", "src_ip", "src_user", "gmt_modified", "app_name", "c_desc", "c_use", + "effect", "type", "c_schema", "encrypted_data_key"), + Arrays.asList("data_id", "group_id", "tenant_id")); final Object[] args = new Object[] {configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, encryptedDataKey, configInfo.getDataId(), configInfo.getGroup(), tenantTmp}; @@ -1788,13 +1854,28 @@ private void updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String final String type = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("type"); final String schema = configAdvanceInfo == null ? null : (String) configAdvanceInfo.get("schema"); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.updateConfigInfoAtomicCas(); - final Object[] args = new Object[] {configInfo.getContent(), md5Tmp, srcIp, srcUser, time, appNameTmp, desc, - use, effect, type, schema, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, - configInfo.getMd5()}; + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5Tmp); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + final MapperResult mapperResult = configInfoMapper.updateConfigInfoAtomicCas(context); - EmbeddedStorageContextUtils.addSqlContext(true, sql, args); + EmbeddedStorageContextUtils.addSqlContext(true, mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override @@ -1803,12 +1884,16 @@ public List findConfigInfosByIds(final String ids) { return null; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return databaseOperate.queryMany(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult mapperResult = configInfoMapper.findConfigInfosByIds(context); + return databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_INFO_ROW_MAPPER); } @@ -1818,9 +1903,10 @@ public ConfigAdvanceInfo findConfigAdvanceInfo(final String dataId, final String final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; List configTagList = this.selectTagByConfig(dataId, group, tenant); - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - ConfigAdvanceInfo configAdvance = databaseOperate.queryOne(configInfoMapper.select(Arrays - .asList("gmt_create", "gmt_modified", "src_user", "src_ip", "c_desc", "c_use", "effect", "type", + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + ConfigAdvanceInfo configAdvance = databaseOperate.queryOne(configInfoMapper.select( + Arrays.asList("gmt_create", "gmt_modified", "src_user", "src_ip", "c_desc", "c_use", "effect", "type", "c_schema"), Arrays.asList("data_id", "group_id", "tenant_id")), new Object[] {dataId, group, tenantTmp}, CONFIG_ADVANCE_INFO_ROW_MAPPER); @@ -1842,16 +1928,17 @@ 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; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.select(Arrays - .asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "gmt_create", + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.select( + Arrays.asList("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"), Arrays.asList("data_id", "group_id", "tenant_id")); List configTagList = selectTagByConfig(dataId, group, tenant); - ConfigAllInfo configAdvance = databaseOperate - .queryOne(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_ALL_INFO_ROW_MAPPER); + ConfigAllInfo configAdvance = databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, + CONFIG_ALL_INFO_ROW_MAPPER); if (configTagList != null && !configTagList.isEmpty()) { StringBuilder configTagsTmp = new StringBuilder(); @@ -1876,11 +1963,11 @@ public void insertConfigHistoryAtomic(long configHistoryId, ConfigInfo configInf String encryptedDataKey = StringUtils.isBlank(configInfo.getEncryptedDataKey()) ? StringUtils.EMPTY : configInfo.getEncryptedDataKey(); - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - final String sql = historyConfigInfoMapper.insert(Arrays - .asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_ip", "src_user", - "gmt_modified", "op_type", "encrypted_data_key")); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + final String sql = historyConfigInfoMapper.insert( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_ip", + "src_user", "gmt_modified", "op_type", "encrypted_data_key")); final Object[] args = new Object[] {configHistoryId, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, appNameTmp, configInfo.getContent(), md5Tmp, srcIp, srcUser, time, ops, encryptedDataKey}; @@ -1892,41 +1979,52 @@ public Page findConfigHistory(String dataId, String group, St int pageSize) { String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); String sqlCountRows = historyConfigInfoMapper.count(Arrays.asList("data_id", "group_id", "tenant_id")); - String sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(); + MapperResult sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(context); PaginationHelper helper = createPaginationHelper(); - return helper.fetchPage(sqlCountRows, sqlFetchRows, new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, - HISTORY_LIST_ROW_MAPPER); + return helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, HISTORY_LIST_ROW_MAPPER); } @Override public ConfigHistoryInfo detailConfigHistory(Long nid) { - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - String sqlFetchRows = historyConfigInfoMapper.select(Arrays - .asList("nid", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_user", "src_ip", - "op_type", "gmt_create", "gmt_modified", "encrypted_data_key"), + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + String sqlFetchRows = historyConfigInfoMapper.select( + Arrays.asList("nid", "data_id", "group_id", "tenant_id", "app_name", "content", "md5", "src_user", + "src_ip", "op_type", "gmt_create", "gmt_modified", "encrypted_data_key"), Collections.singletonList("nid")); return databaseOperate.queryOne(sqlFetchRows, new Object[] {nid}, HISTORY_DETAIL_ROW_MAPPER); } @Override public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { - HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.HIS_CONFIG_INFO); - String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); - return databaseOperate.queryOne(sqlFetchRows, new Object[] {id}, HISTORY_DETAIL_ROW_MAPPER); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( + dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, id); + MapperResult sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(context); + return databaseOperate.queryOne(sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + HISTORY_DETAIL_ROW_MAPPER); } @Override public void insertTenantInfoAtomic(String kp, String tenantId, String tenantName, String tenantDesc, String createResoure, final long time) { - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); - final String sql = tenantInfoMapper.insert(Arrays.asList("kp", "tenant_id", "tenant_name", "tenant_desc", "create_source", "gmt_create", "gmt_modified")); + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); + final String sql = tenantInfoMapper.insert( + Arrays.asList("kp", "tenant_id", "tenant_name", "tenant_desc", "create_source", "gmt_create", + "gmt_modified")); final Object[] args = new Object[] {kp, tenantId, tenantName, tenantDesc, createResoure, time, time}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -1943,9 +2041,11 @@ public void insertTenantInfoAtomic(String kp, String tenantId, String tenantName @Override public void updateTenantNameAtomic(String kp, String tenantId, String tenantName, String tenantDesc) { - - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); - final String sql = tenantInfoMapper.update(Arrays.asList("tenant_name", "tenant_desc", "gmt_modified"), Arrays.asList("kp", "tenant_id")); + + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); + final String sql = tenantInfoMapper.update(Arrays.asList("tenant_name", "tenant_desc", "gmt_modified"), + Arrays.asList("kp", "tenant_id")); final Object[] args = new Object[] {tenantName, tenantDesc, System.currentTimeMillis(), kp, tenantId}; EmbeddedStorageContextUtils.addSqlContext(sql, args); @@ -1962,7 +2062,8 @@ public void updateTenantNameAtomic(String kp, String tenantId, String tenantName @Override public List findTenantByKp(String kp) { - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); String sql = tenantInfoMapper.select(Arrays.asList("tenant_id", "tenant_name", "tenant_desc"), Collections.singletonList("kp")); return databaseOperate.queryMany(sql, new Object[] {kp}, TENANT_INFO_ROW_MAPPER); @@ -1971,7 +2072,8 @@ public List findTenantByKp(String kp) { @Override public TenantInfo findTenantByKp(String kp, String tenantId) { - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); String sql = tenantInfoMapper.select(Arrays.asList("tenant_id", "tenant_name", "tenant_desc"), Arrays.asList("kp", "tenant_id")); return databaseOperate.queryOne(sql, new Object[] {kp, tenantId}, TENANT_INFO_ROW_MAPPER); @@ -1980,9 +2082,11 @@ public TenantInfo findTenantByKp(String kp, String tenantId) { @Override public void removeTenantInfoAtomic(final String kp, final String tenantId) { - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); - EmbeddedStorageContextUtils.addSqlContext(tenantInfoMapper.delete(Arrays.asList("kp", "tenant_id")), kp, tenantId); + EmbeddedStorageContextUtils.addSqlContext(tenantInfoMapper.delete(Arrays.asList("kp", "tenant_id")), kp, + tenantId); try { databaseOperate.update(EmbeddedStorageContextUtils.getCurrentSqlContext()); } finally { @@ -2041,13 +2145,15 @@ public List listAllGroupKeyMd5() { @Override public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows((pageNo - 1) * pageSize, pageSize); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + + MapperResult sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows(context); PaginationHelper helper = createPaginationHelper(); - Page page = helper - .fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, - pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), + sqlFetchRows.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); return page.getPageItems(); } @@ -2066,10 +2172,11 @@ 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; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper.select(Arrays - .asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "type", "gmt_modified", "md5", - "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.select( + Arrays.asList("id", "data_id", "group_id", "tenant_id", "app_name", "content", "type", "gmt_modified", + "md5", "encrypted_data_key"), Arrays.asList("data_id", "group_id", "tenant_id")); return databaseOperate.queryOne(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } @@ -2089,29 +2196,28 @@ public boolean isExistTable(String tableName) { 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; - Map params = new HashMap<>(16); - List paramList = new ArrayList<>(); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + if (!CollectionUtils.isEmpty(ids)) { - paramList.addAll(ids); + context.putWhereParameter(FieldConstant.IDS, ids); } else { - paramList.add(tenantTmp); - params.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (!StringUtils.isBlank(dataId)) { - paramList.add(generateLikeArgument(dataId)); - params.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - params.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - params.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); - return databaseOperate.queryMany(sql, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); + + MapperResult mapperResult = configInfoMapper.findAllConfigInfo4Export(context); + return databaseOperate.queryMany(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_ALL_INFO_ROW_MAPPER); } @Override @@ -2132,8 +2238,8 @@ public Map batchInsertOrUpdate(List configInfoLis for (int i = 0; i < configInfoList.size(); i++) { ConfigAllInfo configInfo = configInfoList.get(i); try { - ParamUtils - .checkParam(configInfo.getDataId(), configInfo.getGroup(), "datumId", configInfo.getContent()); + ParamUtils.checkParam(configInfo.getDataId(), configInfo.getGroup(), "datumId", + configInfo.getContent()); } catch (Throwable e) { DEFAULT_LOG.error("data verification failed", e); throw e; @@ -2218,10 +2324,10 @@ public int tenantInfoCountByTenantId(String tenantId) { if (Objects.isNull(tenantId)) { throw new IllegalArgumentException("tenantId can not be null"); } - TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_INFO); + TenantInfoMapper tenantInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.TENANT_INFO); String sql = tenantInfoMapper.count(Arrays.asList("tenant_id")); - Integer result = databaseOperate - .queryOne(sql, new String[] {tenantId}, Integer.class); + Integer result = databaseOperate.queryOne(sql, new String[] {tenantId}, Integer.class); if (result == null) { return 0; } @@ -2234,10 +2340,11 @@ public List queryConfigInfoByNamespace(String tenantId) { throw new IllegalArgumentException("tenantId can not be null"); } String tenantTmp = StringUtils.isBlank(tenantId) ? StringUtils.EMPTY : tenantId; - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - final String sql = configInfoMapper - .select(Arrays.asList("data_id", "group_id", "tenant_id", "app_name", "type"), - Collections.singletonList("tenant_id")); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + final String sql = configInfoMapper.select( + Arrays.asList("data_id", "group_id", "tenant_id", "app_name", "type"), + Collections.singletonList("tenant_id")); return databaseOperate.queryMany(sql, new Object[] {tenantTmp}, CONFIG_INFO_WRAPPER_ROW_MAPPER); } } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImpl.java index 8507228bf25..66f83e18668 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoAggrPersistServiceImpl.java @@ -29,6 +29,7 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -240,12 +241,12 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult result = configInfoAggrMapper.batchRemoveAggr(context); final String sql = result.getSql(); @@ -281,13 +282,13 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context); String sql = mapperResult.getSql(); @@ -330,9 +331,9 @@ public List findConfigInfoAggr(String dataId, String group, Stri TableConstant.CONFIG_INFO_AGGR); MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); @@ -360,13 +361,13 @@ public Page findConfigInfoAggrByPage(String dataId, String group final int startRow = (pageNo - 1) * pageSize; String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"), Arrays.asList("data_id", "group_id", "tenant_id")); - + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context); String sqlFetchRows = mapperResult.getSql(); @@ -487,10 +488,11 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p public List findAllAggrGroup() { ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper.findAllAggrGroupByDistinct(); + MapperResult mapperResult = configInfoAggrMapper.findAllAggrGroupByDistinct(null); try { - return jt.query(sql, new Object[] {}, CONFIG_INFO_CHANGED_ROW_MAPPER); + return jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_INFO_CHANGED_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoBetaPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoBetaPersistServiceImpl.java index 211dc3d51d0..dc5714d12bf 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoBetaPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoBetaPersistServiceImpl.java @@ -29,6 +29,7 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -175,19 +176,18 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); MapperContext context = new MapperContext(); - context.putUpdateParameter("content", configInfo.getContent()); - context.putUpdateParameter("md5", md5); - context.putUpdateParameter("beta_ips", betaIps); - context.putUpdateParameter("src_ip", srcIp); - context.putUpdateParameter("src_user", srcUser); - context.putUpdateParameter("gmt_modified", time); - context.putUpdateParameter("app_name", appNameTmp); - - context.putWhereParameter("data_id", configInfo.getDataId()); - context.putWhereParameter("group_id", configInfo.getGroup()); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("md5", configInfo.getMd5()); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); MapperResult mapperResult = configInfoBetaMapper.updateConfigInfo4BetaCas(context); final String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); @@ -236,14 +236,13 @@ public Page findAllConfigInfoBetaForDumpAll(final int pag ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); String sqlCountRows = configInfoBetaMapper.count(null); - + MapperContext context = new MapperContext(); context.setStartRow(startRow); context.setPageSize(pageSize); - MapperResult mapperResult = configInfoBetaMapper - .findAllConfigInfoBetaForDumpAllFetchRows(context); - + MapperResult mapperResult = configInfoBetaMapper.findAllConfigInfoBetaForDumpAllFetchRows(context); + String sqlFetchRows = mapperResult.getSql(); PaginationHelper helper = createPaginationHelper(); try { diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImpl.java index 288a061443a..db312ac269c 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoPersistServiceImpl.java @@ -39,9 +39,12 @@ 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.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler; import com.alibaba.nacos.sys.env.EnvUtil; import org.apache.commons.collections.CollectionUtils; @@ -457,15 +460,17 @@ public void removeConfigInfoByIdsAtomic(final String ids) { return; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (String s : tagArr) { - paramList.add(Long.parseLong(s)); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult result = configInfoMapper.removeConfigInfoByIdsAtomic(context); try { - jt.update(sql, paramList.toArray()); + jt.update(result.getSql(), result.getParamList().toArray()); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -570,9 +575,26 @@ private int updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String try { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return jt.update(configInfoMapper.updateConfigInfoAtomicCas(), configInfo.getContent(), md5Tmp, srcIp, - srcUser, time, appNameTmp, desc, use, effect, type, schema, configInfo.getDataId(), - configInfo.getGroup(), tenantTmp, configInfo.getMd5()); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5Tmp); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + MapperResult mapperResult = configInfoMapper.updateConfigInfoAtomicCas(context); + return jt.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -627,9 +649,10 @@ public void updateMd5(String dataId, String group, String tenant, String md5, Ti public long findConfigMaxId() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findConfigMaxId(); + + MapperResult mapperResult = configInfoMapper.findConfigMaxId(null); try { - return jt.queryForObject(sql, Long.class); + return jt.queryForObject(mapperResult.getSql(), Long.class); } catch (NullPointerException e) { return 0; } @@ -640,10 +663,10 @@ public long findConfigMaxId() { public List findAllDataIdAndGroup() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllDataIdAndGroup(); + MapperResult mapperResult = configInfoMapper.findAllDataIdAndGroup(null); try { - return jt.query(sql, new Object[] {}, CONFIG_INFO_ROW_MAPPER); + return jt.query(mapperResult.getSql(), new Object[] {}, CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { return Collections.emptyList(); } catch (CannotGetJdbcConnectionException e) { @@ -713,44 +736,43 @@ public Page findConfigInfo4Page(final int pageNo, final int pageSize 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 sql = null; - String sqlCount = null; - List paramList = new ArrayList<>(); - paramList.add(tenantTmp); - Map paramsMap = new HashMap<>(16); + MapperResult sql; + MapperResult sqlCount; + + final MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (StringUtils.isNotBlank(dataId)) { - paramList.add(dataId); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - paramList.add(content); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, content); } - final int startRow = (pageNo - 1) * pageSize; + context.setStartRow((pageNo - 1) * pageSize); + context.setPageSize(pageSize); + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - paramList.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, Arrays.asList(tagArr)); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, tagArr.length); - sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(paramsMap, tagArr.length, startRow, pageSize); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(context); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); - sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); + + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(context); + sql = configInfoMapper.findConfigInfo4PageFetchRows(context); } try { - Page page = helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCount, sql, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), configInfo.getEncryptedDataKey(), configInfo.getContent()); @@ -772,9 +794,14 @@ public Page findConfigInfoByApp(final int pageNo, final int pageSize final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), - configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), - new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + + MapperResult countRows = configInfoMapper.findConfigInfoByAppCountRows(context); + MapperResult fetchRows = configInfoMapper.findConfigInfoByAppFetchRows(context); + + return helper.fetchPageLimit(countRows, fetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -788,9 +815,15 @@ public Page findConfigInfoBaseByGroup(final int pageNo, final in final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, StringUtils.EMPTY); + MapperResult mapperResult = configInfoMapper.findConfigInfoBaseByGroupFetchRows(context); + return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), - configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), - new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + mapperResult.getSql(), mapperResult.getParamList().toArray(), pageNo, pageSize, + CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -813,8 +846,10 @@ public int configInfoCount() { public int configInfoCount(String tenant) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.configInfoLikeTenantCount(); - Integer result = jt.queryForObject(sql, new Object[] {tenant}, Integer.class); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenant); + MapperResult mapperResult = configInfoMapper.configInfoLikeTenantCount(context); + Integer result = jt.queryForObject(mapperResult.getSql(), mapperResult.getParamList().toArray(), Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); } @@ -826,8 +861,8 @@ public List getTenantIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getTenantIdList(from, pageSize); - return jt.queryForList(sql, String.class); + MapperResult mapperResult = configInfoMapper.getTenantIdList(new MapperContext(from, pageSize)); + return jt.queryForList(mapperResult.getSql(), mapperResult.getParamList().toArray(), String.class); } @Override @@ -835,8 +870,8 @@ public List getGroupIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getGroupIdList(from, pageSize); - return jt.queryForList(sql, String.class); + MapperResult mapperResult = configInfoMapper.getGroupIdList(new MapperContext(from, pageSize)); + return jt.queryForList(mapperResult.getSql(), mapperResult.getParamList().toArray(), String.class); } @Override @@ -846,13 +881,13 @@ public Page findAllConfigInfo(final int pageNo, final int pageSize, ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); - + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(generateLikeArgument(tenantTmp))); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, - new Object[] {generateLikeArgument(tenantTmp), (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -865,7 +900,9 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int startRow = (pageNo - 1) * pageSize; - String select = configInfoMapper.findAllConfigKey(startRow, pageSize); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + final MapperResult mapperResult = configInfoMapper.findAllConfigKey(context); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -883,8 +920,7 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi page.setTotalCount(totalCount); try { - List result = jt.query(select, new Object[] {generateLikeArgument(tenantTmp)}, - // new Object[0], + List result = jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_KEY_ROW_MAPPER); for (ConfigKey item : result) { @@ -903,10 +939,13 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String select = configInfoMapper.findAllConfigInfoFragment(0, pageSize); + MapperContext context = new MapperContext(0, pageSize); + context.putWhereParameter(FieldConstant.ID, lastMaxId); + MapperResult select = configInfoMapper.findAllConfigInfoFragment(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPageLimit(select, new Object[] {lastMaxId}, 1, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(select.getSql(), select.getParamList().toArray(), 1, pageSize, + CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -1020,46 +1059,41 @@ 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 = null; - String sqlFetchRows = null; - Map paramsMap = new HashMap<>(16); + MapperResult sqlCountRows; + MapperResult sqlFetchRows; + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); - List params = new ArrayList<>(); - params.add(generateLikeArgument(tenantTmp)); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - params.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, tagArr.length); - sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(paramsMap, tagArr.length, startRow, - pageSize); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); - sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(context); } try { - Page page = helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { @@ -1080,33 +1114,25 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } - - PaginationHelper helper = createPaginationHelper(); - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); - String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); - + MapperResult sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(context); + PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, - CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -1118,8 +1144,14 @@ public List findChangeConfig(final Timestamp startTime, final try { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - List> list = jt.queryForList(configInfoMapper.findChangeConfig(), - new Object[] {startTime, endTime}); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + + MapperResult mapperResult = configInfoMapper.findChangeConfig(context); + List> list = jt.queryForList(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertChangeConfig(list); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); @@ -1132,43 +1164,38 @@ 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; - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(tenantTmp)) { - params.add(tenantTmp); - paramsMap.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT, tenantTmp); } if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (startTime != null) { - params.add(startTime); + context.putWhereParameter(FieldConstant.START_TIME, startTime); } if (endTime != null) { - params.add(endTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); } - final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); - String sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, - pageSize, lastMaxId); + MapperResult sqlCountRows = configInfoMapper.findChangeConfigCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, - CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -1199,15 +1226,18 @@ public List findConfigInfosByIds(final String ids) { return null; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult mapperResult = configInfoMapper.findConfigInfosByIds(context); + try { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO); - return this.jt.query(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), - CONFIG_INFO_ROW_MAPPER); + return this.jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null return null; } catch (CannotGetJdbcConnectionException e) { @@ -1333,11 +1363,13 @@ public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows((pageNo - 1) * pageSize, pageSize); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + + MapperResult sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, - pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), + sqlFetchRows.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); return page.getPageItems(); } catch (CannotGetJdbcConnectionException e) { @@ -1369,31 +1401,27 @@ public ConfigInfoWrapper queryConfigInfo(final String dataId, final String group 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; - Map params = new HashMap<>(16); - List paramList = new ArrayList<>(); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); if (!CollectionUtils.isEmpty(ids)) { - paramList.addAll(ids); + context.putWhereParameter(FieldConstant.IDS, ids); } else { - paramList.add(tenantTmp); - params.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (!StringUtils.isBlank(dataId)) { - paramList.add(generateLikeArgument(dataId)); - params.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - params.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - params.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); + MapperResult mapperResult = configInfoMapper.findAllConfigInfo4Export(context); try { - return this.jt.query(sql, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); + return this.jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_ALL_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -1428,11 +1456,13 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); + try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImpl.java index 4e97527ebba..fb35bf98c54 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalConfigInfoTagPersistServiceImpl.java @@ -29,8 +29,11 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.context.annotation.Conditional; import org.springframework.dao.DataIntegrityViolationException; @@ -164,9 +167,24 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - return jt.update(configInfoTagMapper.updateConfigInfo4TagCas(), configInfo.getContent(), md5, srcIp, - srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, - configInfo.getMd5()) > 0; + + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.TAG_ID, tagTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + final MapperResult mapperResult = configInfoTagMapper.updateConfigInfo4TagCas(context); + + return jt.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) > 0; } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; @@ -211,11 +229,14 @@ public Page findAllConfigInfoTagForDumpAll(final int pageN ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); String sqlCountRows = configInfoTagMapper.count(null); - String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows( + new MapperContext(startRow, pageSize)); + PaginationHelper helper = createPaginationHelper(); + try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, pageSize, - CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, + pageSize, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java index 17c28820bd2..9734865c878 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/extrnal/ExternalHistoryConfigInfoPersistServiceImpl.java @@ -29,8 +29,11 @@ import com.alibaba.nacos.config.server.service.repository.PaginationHelper; import com.alibaba.nacos.config.server.utils.LogUtil; import com.alibaba.nacos.plugin.datasource.MapperManager; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import com.alibaba.nacos.sys.env.EnvUtil; import org.springframework.context.annotation.Conditional; import org.springframework.dao.DataAccessException; @@ -123,9 +126,12 @@ public void insertConfigHistoryAtomic(long id, ConfigInfo configInfo, String src public void removeConfigHistory(final Timestamp startTime, final int limitSize) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.removeConfigHistory(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, startTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + MapperResult mapperResult = historyConfigInfoMapper.removeConfigHistory(context); PaginationHelper paginationHelper = createPaginationHelper(); - paginationHelper.updateLimit(sql, new Object[] {startTime, limitSize}); + paginationHelper.updateLimit(mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override @@ -133,8 +139,13 @@ public List findDeletedConfig(final Timestamp startTime, final Times try { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - List> list = jt.queryForList(historyConfigInfoMapper.findDeletedConfig(), - new Object[] {startTime, endTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + + MapperResult mapperResult = historyConfigInfoMapper.findDeletedConfig(context); + List> list = jt.queryForList(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertDeletedConfig(list); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[db-error] " + e, e); @@ -147,14 +158,21 @@ public Page findConfigHistory(String dataId, String group, St int pageSize) { PaginationHelper helper = createPaginationHelper(); String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + String sqlCountRows = historyConfigInfoMapper.count(Arrays.asList("data_id", "group_id", "tenant_id")); - String sqlFetchRows = historyConfigInfoMapper.pageFindConfigHistoryFetchRows(pageNo, pageSize); + MapperResult sqlFetchRows = historyConfigInfoMapper.pageFindConfigHistoryFetchRows(context); - Page page = null; + Page page; try { - page = helper.fetchPage(sqlCountRows, sqlFetchRows, new Object[] {dataId, group, tenantTmp}, pageNo, + page = helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, HISTORY_LIST_ROW_MAPPER); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[list-config-history] error, dataId:{}, group:{}", new Object[] {dataId, group}, @@ -186,10 +204,12 @@ public ConfigHistoryInfo detailConfigHistory(Long nid) { public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, id); + MapperResult sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(context); try { - ConfigHistoryInfo historyInfo = jt.queryForObject(sqlFetchRows, new Object[] {id}, - HISTORY_DETAIL_ROW_MAPPER); + ConfigHistoryInfo historyInfo = jt.queryForObject(sqlFetchRows.getSql(), + sqlFetchRows.getParamList().toArray(), HISTORY_DETAIL_ROW_MAPPER); return historyInfo; } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[detail-previous-config-history] error, id:{}", new Object[] {id}, e); @@ -201,8 +221,11 @@ public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { public int findConfigHistoryCountByTime(final Timestamp startTime) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); - Integer result = jt.queryForObject(sql, Integer.class, new Object[] {startTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + + MapperResult mapperResult = historyConfigInfoMapper.findConfigHistoryCountByTime(context); + Integer result = jt.queryForObject(mapperResult.getSql(), mapperResult.getParamList().toArray(), Integer.class); if (result == null) { throw new IllegalArgumentException("findConfigHistoryCountByTime error"); } 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 a0478feb5c4..2d00eb59f8c 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,6 +19,7 @@ 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.plugin.datasource.model.MapperResult; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -125,6 +126,13 @@ public Page fetchPageLimit(final String sqlCountRows, final String sqlFetchRo } return page; } + + @Override + public Page fetchPageLimit(MapperResult countMapperResult, MapperResult mapperResult, int pageNo, int pageSize, + RowMapper rowMapper) { + return fetchPageLimit(countMapperResult.getSql(), countMapperResult.getParamList().toArray(), + mapperResult.getSql(), mapperResult.getParamList().toArray(), pageNo, pageSize, rowMapper); + } @Override public Page fetchPageLimit(final String sqlCountRows, final Object[] args1, final String sqlFetchRows, 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 b23737fc871..e26091844e0 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 @@ -44,6 +44,7 @@ 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.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoBetaMapper; @@ -150,8 +151,8 @@ public void init() { jt = getJdbcTemplate(); tjt = getTransactionTemplate(); - Boolean isDataSourceLogEnable = EnvUtil - .getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, false); + Boolean isDataSourceLogEnable = EnvUtil.getProperty(Constants.NACOS_PLUGIN_DATASOURCE_LOG, Boolean.class, + false); mapperManager = MapperManager.instance(isDataSourceLogEnable); } @@ -350,24 +351,24 @@ public boolean updateConfigInfo4BetaCas(ConfigInfo configInfo, String betaIps, S ConfigInfoBetaMapper configInfoBetaMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_BETA); MapperContext context = new MapperContext(); - context.putUpdateParameter("content", configInfo.getContent()); - context.putUpdateParameter("md5", md5); - context.putUpdateParameter("beta_ips", betaIps); - context.putUpdateParameter("src_ip", srcIp); - context.putUpdateParameter("src_user", srcUser); - context.putUpdateParameter("gmt_modified", time); - context.putUpdateParameter("app_name", appNameTmp); - - context.putWhereParameter("data_id", configInfo.getDataId()); - context.putWhereParameter("group_id", configInfo.getGroup()); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("md5", configInfo.getMd5()); - + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + MapperResult mapperResult = configInfoBetaMapper.updateConfigInfo4BetaCas(context); final String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); final Object[] args = paramList.toArray(); - + return jt.update(sql, args) > 0; } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -405,11 +406,25 @@ public boolean updateConfigInfo4TagCas(ConfigInfo configInfo, String tag, String String md5 = MD5Utils.md5Hex(configInfo.getContent(), Constants.ENCODE); ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); - return jt.update(configInfoTagMapper.updateConfigInfo4TagCas(), configInfo.getContent(), md5, srcIp, - srcUser, time, appNameTmp, configInfo.getDataId(), configInfo.getGroup(), tenantTmp, tagTmp, - configInfo.getMd5()) > 0; + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.TAG_ID, tagTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + final MapperResult mapperResult = configInfoTagMapper.updateConfigInfo4TagCas(context); + + return jt.update(mapperResult.getSql(), mapperResult.getParamList().toArray()) > 0; } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -662,12 +677,12 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.batchRemoveAggr(context); final String sql = mapperResult.getSql(); @@ -686,17 +701,22 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St public void removeConfigHistory(final Timestamp startTime, final int limitSize) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.removeConfigHistory(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, startTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + MapperResult mapperResult = historyConfigInfoMapper.removeConfigHistory(context); PaginationHelper paginationHelper = createPaginationHelper(); - paginationHelper.updateLimit(sql, new Object[] {startTime, limitSize}); + paginationHelper.updateLimit(mapperResult.getSql(), mapperResult.getParamList().toArray()); } @Override public int findConfigHistoryCountByTime(final Timestamp startTime) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sql = historyConfigInfoMapper.findConfigHistoryCountByTime(); - Integer result = jt.queryForObject(sql, Integer.class, new Object[] {startTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + MapperResult sqlFetchRows = historyConfigInfoMapper.findConfigHistoryCountByTime(context); + Integer result = jt.queryForObject(sqlFetchRows.getSql(), Integer.class, sqlFetchRows.getParamList().toArray()); if (result == null) { throw new IllegalArgumentException("configInfoBetaCount error"); } @@ -707,9 +727,9 @@ public int findConfigHistoryCountByTime(final Timestamp startTime) { public long findConfigMaxId() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findConfigMaxId(); + MapperResult mapperResult = configInfoMapper.findConfigMaxId(null); try { - return jt.queryForObject(sql, Long.class); + return jt.queryForObject(mapperResult.getSql(), Long.class); } catch (NullPointerException e) { return 0; } @@ -780,10 +800,9 @@ public boolean replaceAggr(final String dataId, final String group, final String public List findAllDataIdAndGroup() { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllDataIdAndGroup(); - + MapperResult mapperResult = configInfoMapper.findAllDataIdAndGroup(null); try { - return jt.query(sql, new Object[] {}, CONFIG_INFO_ROW_MAPPER); + return jt.query(mapperResult.getSql(), new Object[] {}, CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { return Collections.emptyList(); } catch (CannotGetJdbcConnectionException e) { @@ -890,41 +909,41 @@ 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 sql = null; - String sqlCount = null; - List paramList = new ArrayList<>(); - paramList.add(tenantTmp); - Map paramsMap = new HashMap<>(16); + MapperResult sql; + MapperResult sqlCount; + + final MapperContext context = new MapperContext(); + + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (StringUtils.isNotBlank(dataId)) { - paramList.add(dataId); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } - final int startRow = (pageNo - 1) * pageSize; + context.setStartRow((pageNo - 1) * pageSize); + context.setPageSize(pageSize); + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - paramList.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, Arrays.asList(tagArr)); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(paramsMap, tagArr.length); - sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(paramsMap, tagArr.length, startRow, - pageSize); + sqlCount = configTagsRelationMapper.findConfigInfo4PageCountRows(context); + sql = configTagsRelationMapper.findConfigInfo4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCount = configInfoMapper.findConfigInfo4PageCountRows(paramsMap); - sql = configInfoMapper.findConfigInfo4PageFetchRows(paramsMap, startRow, pageSize); + + sqlCount = configInfoMapper.findConfigInfo4PageCountRows(context); + sql = configInfoMapper.findConfigInfo4PageFetchRows(context); } try { - Page page = helper.fetchPage(sqlCount, sql, paramList.toArray(), pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCount, sql, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { Pair pair = EncryptionHandler.decryptHandler(configInfo.getDataId(), configInfo.getEncryptedDataKey(), configInfo.getContent()); @@ -946,11 +965,16 @@ public Page findConfigInfoByApp(final int pageNo, final int pageSize final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return helper.fetchPage(configInfoMapper.findConfigInfoByAppCountRows(), - configInfoMapper.findConfigInfoByAppFetchRows(startRow, pageSize), - new Object[] {generateLikeArgument(tenantTmp), appName}, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + + MapperResult countRows = configInfoMapper.findConfigInfoByAppCountRows(context); + MapperResult fetchRows = configInfoMapper.findConfigInfoByAppFetchRows(context); + + return helper.fetchPageLimit(countRows, fetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -962,9 +986,15 @@ public Page findConfigInfoBaseByGroup(final int pageNo, final in final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, StringUtils.EMPTY); + MapperResult mapperResult = configInfoMapper.findConfigInfoBaseByGroupFetchRows(context); + return helper.fetchPage(configInfoMapper.count(Arrays.asList("group_id", "tenant_id")), - configInfoMapper.findConfigInfoBaseByGroupFetchRows(startRow, pageSize), - new Object[] {group, StringUtils.EMPTY}, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + mapperResult.getSql(), mapperResult.getParamList().toArray(), pageNo, pageSize, + CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -987,8 +1017,10 @@ public int configInfoCount() { public int configInfoCount(String tenant) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.configInfoLikeTenantCount(); - Integer result = jt.queryForObject(sql, new Object[] {tenant}, Integer.class); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.TENANT_ID, tenant); + MapperResult mapperResult = configInfoMapper.configInfoLikeTenantCount(context); + Integer result = jt.queryForObject(mapperResult.getSql(), mapperResult.getParamList().toArray(), Integer.class); if (result == null) { throw new IllegalArgumentException("configInfoCount error"); } @@ -1024,8 +1056,8 @@ public List getTenantIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getTenantIdList(from, pageSize); - return jt.queryForList(sql, String.class); + MapperResult mapperResult = configInfoMapper.getTenantIdList(new MapperContext(from, pageSize)); + return jt.queryForList(mapperResult.getSql(), mapperResult.getParamList().toArray(), String.class); } @Override @@ -1033,8 +1065,8 @@ public List getGroupIdList(int page, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int from = (page - 1) * pageSize; - String sql = configInfoMapper.getGroupIdList(from, pageSize); - return jt.queryForList(sql, String.class); + MapperResult mapperResult = configInfoMapper.getGroupIdList(new MapperContext(from, pageSize)); + return jt.queryForList(mapperResult.getSql(), mapperResult.getParamList().toArray(), String.class); } @Override @@ -1058,18 +1090,18 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List< final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context); String sql = mapperResult.getSql(); Object[] args = mapperResult.getParamList().toArray(); - + Integer result = jt.queryForObject(sql, Integer.class, args); if (result == null) { throw new IllegalArgumentException("aggrConfigInfoCount error"); @@ -1083,16 +1115,18 @@ public Page findAllConfigInfo(final int pageNo, final int pageSize, final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(generateLikeArgument(tenantTmp))); + String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, - new Object[] {generateLikeArgument(tenantTmp), (pageNo - 1) * pageSize, pageSize}, pageNo, pageSize, - CONFIG_INFO_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -1103,7 +1137,10 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); int startRow = (pageNo - 1) * pageSize; - String select = configInfoMapper.findAllConfigKey(startRow, pageSize); + + MapperContext context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + final MapperResult mapperResult = configInfoMapper.findAllConfigKey(context); final int totalCount = configInfoCount(tenant); int pageCount = totalCount / pageSize; @@ -1121,8 +1158,7 @@ public Page findAllConfigKey(final int pageNo, final int pageSize, fi page.setTotalCount(totalCount); try { - List result = jt.query(select, new Object[] {generateLikeArgument(tenantTmp)}, - // new Object[0], + List result = jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_KEY_ROW_MAPPER); for (ConfigKey item : result) { @@ -1144,14 +1180,16 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoMapper.findAllConfigInfoBaseFetchRows( + new MapperContext(startRow, pageSize)); PaginationHelper helper = createPaginationHelper(); + try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {(pageNo - 1) * pageSize, pageSize}, + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -1160,10 +1198,13 @@ public Page findAllConfigInfoBase(final int pageNo, final int pa public Page findAllConfigInfoFragment(final long lastMaxId, final int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String select = configInfoMapper.findAllConfigInfoFragment(0, pageSize); + MapperContext context = new MapperContext(0, pageSize); + context.putWhereParameter(FieldConstant.ID, lastMaxId); + MapperResult select = configInfoMapper.findAllConfigInfoFragment(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPageLimit(select, new Object[] {lastMaxId}, 1, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(select.getSql(), select.getParamList().toArray(), 1, pageSize, + CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1179,10 +1220,9 @@ public Page findAllConfigInfoBetaForDumpAll(final int pag MapperContext context = new MapperContext(); context.setStartRow(startRow); context.setPageSize(pageSize); - - MapperResult mapperResult = configInfoBetaMapper - .findAllConfigInfoBetaForDumpAllFetchRows(context); - + + MapperResult mapperResult = configInfoBetaMapper.findAllConfigInfoBetaForDumpAllFetchRows(context); + String sqlFetchRows = mapperResult.getSql(); PaginationHelper helper = createPaginationHelper(); try { @@ -1201,14 +1241,17 @@ public Page findAllConfigInfoTagForDumpAll(final int pageN ConfigInfoTagMapper configInfoTagMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_TAG); String sqlCountRows = configInfoTagMapper.count(null); - String sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows(startRow, pageSize); + MapperResult sqlFetchRows = configInfoTagMapper.findAllConfigInfoTagForDumpAllFetchRows( + new MapperContext(startRow, pageSize)); + PaginationHelper helper = createPaginationHelper(); + try { - return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, pageSize, - CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), + pageNo, pageSize, CONFIG_INFO_TAG_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -1320,46 +1363,41 @@ 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 = null; - String sqlFetchRows = null; - Map paramsMap = new HashMap<>(16); - - List params = new ArrayList<>(); - params.add(generateLikeArgument(tenantTmp)); + MapperResult sqlCountRows; + MapperResult sqlFetchRows; + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, generateLikeArgument(tenantTmp)); + if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; + if (StringUtils.isNotBlank(configTags)) { String[] tagArr = configTags.split(","); - params.addAll(Arrays.asList(tagArr)); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); ConfigTagsRelationMapper configTagsRelationMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.CONFIG_TAGS_RELATION); - sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(paramsMap, tagArr.length); - sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(paramsMap, tagArr.length, startRow, - pageSize); + sqlCountRows = configTagsRelationMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configTagsRelationMapper.findConfigInfoLike4PageFetchRows(context); } else { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(paramsMap); - sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(paramsMap, startRow, pageSize); + sqlCountRows = configInfoMapper.findConfigInfoLike4PageCountRows(context); + sqlFetchRows = configInfoMapper.findConfigInfoLike4PageFetchRows(context); } try { - Page page = helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_ROW_MAPPER); for (ConfigInfo configInfo : page.getPageItems()) { @@ -1380,33 +1418,27 @@ public Page findConfigInfoBaseLike(final int pageNo, final int p if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group)) { throw new IOException("invalid param"); } - - PaginationHelper helper = createPaginationHelper(); - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } if (!StringUtils.isBlank(content)) { - params.add(generateLikeArgument(content)); - paramsMap.put(CONTENT, CONTENT); + context.putWhereParameter(FieldConstant.CONTENT, generateLikeArgument(content)); } - final int startRow = (pageNo - 1) * pageSize; ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(paramsMap); - String sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(paramsMap, startRow, pageSize); + MapperResult sqlCountRows = configInfoMapper.findConfigInfoBaseLikeCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findConfigInfoBaseLikeFetchRows(context); + PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, - CONFIG_INFO_BASE_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_BASE_ROW_MAPPER); + } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1442,11 +1474,11 @@ public List findConfigInfoAggr(String dataId, String group, Stri String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); @@ -1474,18 +1506,18 @@ public Page findConfigInfoAggrByPage(String dataId, String group final int startRow = (pageNo - 1) * pageSize; String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"), Arrays.asList("data_id", "group_id", "tenant_id")); - + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", group); - context.putWhereParameter("tenant_id", tenantTmp); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context); String sqlFetchRows = mapperResult.getSql(); Object[] sqlFetchArgs = mapperResult.getParamList().toArray(); - + PaginationHelper helper = createPaginationHelper(); try { return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows, @@ -1600,10 +1632,11 @@ public Page findConfigInfoAggrLike(final int pageNo, final int p public List findAllAggrGroup() { ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR); - String sql = configInfoAggrMapper.findAllAggrGroupByDistinct(); + MapperResult mapperResult = configInfoAggrMapper.findAllAggrGroupByDistinct(null); try { - return jt.query(sql, new Object[] {}, CONFIG_INFO_CHANGED_ROW_MAPPER); + return jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_INFO_CHANGED_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1639,8 +1672,13 @@ public List findChangeConfig(final Timestamp startTime, final try { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - List> list = jt.queryForList(configInfoMapper.findChangeConfig(), - new Object[] {startTime, endTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + + MapperResult mapperResult = configInfoMapper.findChangeConfig(context); + List> list = jt.queryForList(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertChangeConfig(list); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1653,43 +1691,37 @@ 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; - Map paramsMap = new HashMap<>(16); - List params = new ArrayList<>(); + + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); if (!StringUtils.isBlank(dataId)) { - params.add(generateLikeArgument(dataId)); - paramsMap.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (!StringUtils.isBlank(group)) { - params.add(generateLikeArgument(group)); - paramsMap.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, generateLikeArgument(group)); } - + if (!StringUtils.isBlank(tenantTmp)) { - params.add(tenantTmp); - paramsMap.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT, tenantTmp); } - + if (!StringUtils.isBlank(appName)) { - params.add(appName); - paramsMap.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } if (startTime != null) { - params.add(startTime); + context.putWhereParameter(FieldConstant.START_TIME, startTime); } if (endTime != null) { - params.add(endTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); } - final int startRow = (pageNo - 1) * pageSize; + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sqlCountRows = configInfoMapper.findChangeConfigCountRows(paramsMap, startTime, endTime); - String sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(paramsMap, startTime, endTime, startRow, - pageSize, lastMaxId); + MapperResult sqlCountRows = configInfoMapper.findChangeConfigCountRows(context); + MapperResult sqlFetchRows = configInfoMapper.findChangeConfigFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - return helper.fetchPage(sqlCountRows, sqlFetchRows, params.toArray(), pageNo, pageSize, lastMaxId, - CONFIG_INFO_WRAPPER_ROW_MAPPER); + return helper.fetchPageLimit(sqlCountRows, sqlFetchRows, pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1701,8 +1733,12 @@ public List findDeletedConfig(final Timestamp startTime, final Times try { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - List> list = jt.queryForList(historyConfigInfoMapper.findDeletedConfig(), - new Object[] {startTime, endTime}); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + MapperResult mapperResult = historyConfigInfoMapper.findDeletedConfig(context); + List> list = jt.queryForList(mapperResult.getSql(), + mapperResult.getParamList().toArray()); return convertDeletedConfig(list); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); @@ -1847,17 +1883,19 @@ public void removeConfigInfoByIdsAtomic(final String ids) { return; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (String s : tagArr) { - paramList.add(Long.parseLong(s)); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - String sql = configInfoMapper.removeConfigInfoByIdsAtomic(paramList.size()); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult result = configInfoMapper.removeConfigInfoByIdsAtomic(context); try { - jt.update(sql, paramList.toArray()); + jt.update(result.getSql(), result.getParamList().toArray()); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -1921,9 +1959,26 @@ private int updateConfigInfoAtomicCas(final ConfigInfo configInfo, final String try { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); - return jt.update(configInfoMapper.updateConfigInfoAtomicCas(), configInfo.getContent(), md5Tmp, srcIp, - srcUser, time, appNameTmp, desc, use, effect, type, schema, configInfo.getDataId(), - configInfo.getGroup(), tenantTmp, configInfo.getMd5()); + MapperContext context = new MapperContext(); + context.putUpdateParameter(FieldConstant.CONTENT, configInfo.getContent()); + context.putUpdateParameter(FieldConstant.MD5, md5Tmp); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + context.putWhereParameter(FieldConstant.DATA_ID, configInfo.getDataId()); + context.putWhereParameter(FieldConstant.GROUP_ID, configInfo.getGroup()); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); + context.putWhereParameter(FieldConstant.MD5, configInfo.getMd5()); + + MapperResult mapperResult = configInfoMapper.updateConfigInfoAtomicCas(context); + return jt.update(mapperResult.getSql(), mapperResult.getParamList().toArray()); } catch (CannotGetJdbcConnectionException e) { LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); throw e; @@ -1936,19 +1991,22 @@ public List findConfigInfosByIds(final String ids) { return null; } List paramList = new ArrayList<>(); - String[] tagArr = ids.split(","); - for (int i = 0; i < tagArr.length; i++) { - paramList.add(Long.parseLong(tagArr[i])); + String[] idArr = ids.split(","); + for (int i = 0; i < idArr.length; i++) { + paramList.add(Long.parseLong(idArr[i])); } + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.IDS, paramList); + MapperResult mapperResult = configInfoMapper.findConfigInfosByIds(context); + try { - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO); - return this.jt.query(configInfoMapper.findConfigInfosByIds(tagArr.length), paramList.toArray(), - CONFIG_INFO_ROW_MAPPER); + return this.jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), CONFIG_INFO_ROW_MAPPER); } catch (EmptyResultDataAccessException e) { // Indicates that the data does not exist, returns null return null; } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -2046,12 +2104,17 @@ public Page findConfigHistory(String dataId, String group, St String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); + + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); String sqlCountRows = historyConfigInfoMapper.count(Arrays.asList("data_id", "group_id", "tenant_id")); - String sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(); + MapperResult sqlFetchRows = historyConfigInfoMapper.findConfigHistoryFetchRows(context); - Page page = null; + Page page; try { - page = helper.fetchPage(sqlCountRows, sqlFetchRows, new Object[] {dataId, group, tenantTmp}, pageNo, + page = helper.fetchPage(sqlCountRows, sqlFetchRows.getSql(), sqlFetchRows.getParamList().toArray(), pageNo, pageSize, HISTORY_LIST_ROW_MAPPER); } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[list-config-history] error, dataId:{}, group:{}", new Object[] {dataId, group}, @@ -2083,10 +2146,12 @@ public ConfigHistoryInfo detailConfigHistory(Long nid) { public ConfigHistoryInfo detailPreviousConfigHistory(Long id) { HistoryConfigInfoMapper historyConfigInfoMapper = mapperManager.findMapper( dataSourceService.getDataSourceType(), TableConstant.HIS_CONFIG_INFO); - String sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(); + MapperContext context = new MapperContext(); + context.putWhereParameter(FieldConstant.ID, id); + MapperResult sqlFetchRows = historyConfigInfoMapper.detailPreviousConfigHistory(context); try { - ConfigHistoryInfo historyInfo = jt.queryForObject(sqlFetchRows, new Object[] {id}, - HISTORY_DETAIL_ROW_MAPPER); + ConfigHistoryInfo historyInfo = jt.queryForObject(sqlFetchRows.getSql(), + sqlFetchRows.getParamList().toArray(), HISTORY_DETAIL_ROW_MAPPER); return historyInfo; } catch (DataAccessException e) { LogUtil.FATAL_LOG.error("[detail-previous-config-history] error, id:{}", new Object[] {id}, e); @@ -2227,15 +2292,17 @@ public List listGroupKeyMd5ByPage(int pageNo, int pageSize) { ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO); String sqlCountRows = configInfoMapper.count(null); - String sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows((pageNo - 1) * pageSize, pageSize); + MapperContext context = new MapperContext((pageNo - 1) * pageSize, pageSize); + + MapperResult sqlFetchRows = configInfoMapper.listGroupKeyMd5ByPageFetchRows(context); PaginationHelper helper = createPaginationHelper(); try { - Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows, new Object[] {}, pageNo, - pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); + Page page = helper.fetchPageLimit(sqlCountRows, sqlFetchRows.getSql(), + sqlFetchRows.getParamList().toArray(), pageNo, pageSize, CONFIG_INFO_WRAPPER_ROW_MAPPER); return page.getPageItems(); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } @@ -2285,33 +2352,31 @@ public boolean isExistTable(String tableName) { 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; - Map params = new HashMap<>(16); - List paramList = new ArrayList<>(); + ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), + TableConstant.CONFIG_INFO); + MapperContext context = new MapperContext(); + if (!CollectionUtils.isEmpty(ids)) { - paramList.addAll(ids); + context.putWhereParameter(FieldConstant.IDS, ids); } else { - paramList.add(tenantTmp); - params.put(TENANT, TENANT); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantTmp); if (!StringUtils.isBlank(dataId)) { - paramList.add(generateLikeArgument(dataId)); - params.put(DATA_ID, DATA_ID); + context.putWhereParameter(FieldConstant.DATA_ID, generateLikeArgument(dataId)); } if (StringUtils.isNotBlank(group)) { - paramList.add(group); - params.put(GROUP, GROUP); + context.putWhereParameter(FieldConstant.GROUP_ID, group); } if (StringUtils.isNotBlank(appName)) { - paramList.add(appName); - params.put(APP_NAME, APP_NAME); + context.putWhereParameter(FieldConstant.APP_NAME, appName); } } - ConfigInfoMapper configInfoMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), - TableConstant.CONFIG_INFO); - String sql = configInfoMapper.findAllConfigInfo4Export(ids, params); + + MapperResult mapperResult = configInfoMapper.findAllConfigInfo4Export(context); try { - return this.jt.query(sql, paramList.toArray(), CONFIG_ALL_INFO_ROW_MAPPER); + return this.jt.query(mapperResult.getSql(), mapperResult.getParamList().toArray(), + CONFIG_ALL_INFO_ROW_MAPPER); } catch (CannotGetJdbcConnectionException e) { - LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e); + LogUtil.FATAL_LOG.error("[db-error] " + e, e); throw e; } } diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/FieldConstant.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/FieldConstant.java new file mode 100644 index 00000000000..501f6d87118 --- /dev/null +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/FieldConstant.java @@ -0,0 +1,94 @@ +/* + * Copyright 1999-2022 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.alibaba.nacos.plugin.datasource.constants; + +/** + * The field name constant. + * + * @author vividfish + **/ + +public class FieldConstant { + + public static final String TENANT_ID = "tenantId"; + + public static final String TENANT = "tenant"; + + public static final String CONTENT = "content"; + + public static final String GROUP_ID = "groupId"; + + public static final String DATA_ID = "dataId"; + + public static final String APP_NAME = "app_name"; + + public static final String START_ROW = "startRow"; + + public static final String PAGE_SIZE = "pageSize"; + + public static final String ID = "id"; + + public static final String START_TIME = "startTime"; + + public static final String END_TIME = "endTime"; + + public static final String TAG_ARR = "tagARR"; + + public static final String LAST_MAX_ID = "lastMaxId"; + + public static final String DATUM_ID = "datumId"; + + public static final String IS_IN = "isIn"; + + public static final String MD5 = "md5"; + + public static final String BETA_IPS = "betaIps"; + + public static final String GMT_MODIFIED = "gmtModified"; + + public static final String SRC_USER = "srcUser"; + + public static final String SRC_IP = "srcIp"; + + public static final String IDS = "ids"; + + public static final String C_DESC = "cDesc"; + + public static final String C_USE = "cUse"; + + public static final String EFFECT = "effect"; + + public static final String C_SCHEMA = "cSchema"; + + public static final String TYPE = "type"; + + public static final String TAG_ID = "tagId"; + + public static final String QUOTA = "quota"; + + public static final String MAX_SIZE = "maxSize"; + + public static final String MAX_AGGR_COUNT = "maxAggrCount"; + + public static final String MAX_AGGR_SIZE = "maxAggrSize"; + + public static final String GMT_CREATE = "gmtCreate"; + + public static final String USAGE = "usage"; + + public static final String LIMIT_SIZE = "limitSize"; +} 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 ebcd00ffa93..01ba4a8177f 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 @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -31,22 +32,23 @@ * @author hyx **/ public class ConfigInfoAggrMapperByDerby extends AbstractMapper implements ConfigInfoAggrMapper { - + @Override public MapperResult findConfigInfoAggrByPageFetchRows(MapperContext context) { - final Integer startRow = (Integer) context.getWhereParameter("startRow"); - final Integer pageSize = (Integer) context.getWhereParameter("pageSize"); - final String dataId = (String) context.getWhereParameter("data_id"); - final String groupId = (String) context.getWhereParameter("group_id"); - final String tenantId = (String) context.getWhereParameter("tenant_id"); + final Integer startRow = context.getStartRow(); + final Integer pageSize = context.getPageSize(); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String groupId = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); - 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 OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize - + " ROWS ONLY"; + 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 OFFSET " + startRow + " ROWS FETCH NEXT " + + pageSize + " ROWS ONLY"; List paramList = CollectionUtils.list(dataId, groupId, tenantId); return new MapperResult(sql, paramList); } - + @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 91a968b60c4..04a1268f071 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 @@ -16,14 +16,20 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.NamespaceUtil; import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import java.sql.Timestamp; -import java.util.Map; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * The derby implementation of ConfigInfoMapper. @@ -32,166 +38,240 @@ **/ public class ConfigInfoMapperByDerby extends AbstractMapper implements ConfigInfoMapper { - + @Override - 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 = ?" + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + public MapperResult findConfigInfoByAppFetchRows(MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + + String sql = + "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND " + + "app_name = ?" + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + + context.getPageSize() + " ROWS ONLY"; + + return new MapperResult(sql, CollectionUtils.list(tenantId, appName)); } - + @Override - public String getTenantIdList(int startRow, int pageSize) { - return "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY tenant_id OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + public MapperResult getTenantIdList(MapperContext context) { + + return new MapperResult( + "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() + + "' GROUP BY tenant_id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + + context.getPageSize() + " ROWS ONLY", Collections.emptyList()); } @Override - public String getGroupIdList(int startRow, int pageSize) { - return "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY group_id OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + public MapperResult getGroupIdList(MapperContext context) { + + return new MapperResult( + "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() + + "' GROUP BY group_id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + + context.getPageSize() + " ROWS ONLY", Collections.emptyList()); } @Override - public String findAllConfigKey(int startRow, int pageSize) { - return " SELECT data_id,group_id,app_name FROM " - + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET " + startRow - + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY ) " + "g, config_info t WHERE g.id = t.id "; + public MapperResult findAllConfigKey(MapperContext context) { + + String sql = " SELECT data_id,group_id,app_name FROM " + + " ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id OFFSET " + context.getStartRow() + + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " + + "g, config_info t WHERE g.id = t.id "; + return new MapperResult(sql, + CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID))); } @Override - 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 OFFSET " - + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY ) " + " g, config_info t WHERE g.id = t.id "; + public MapperResult findAllConfigInfoBaseFetchRows(MapperContext context) { + + return new MapperResult( + "SELECT t.id,data_id,group_id,content,md5 " + " FROM ( SELECT id FROM config_info ORDER BY id OFFSET " + + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " + + " g, config_info t WHERE g.id = t.id ", Collections.emptyList()); } @Override - public String findAllConfigInfoFragment(int startRow, int pageSize) { - 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 OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + public MapperResult findAllConfigInfoFragment(MapperContext context) { + + return new MapperResult( + "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type FROM config_info WHERE id > ? " + + "ORDER BY id ASC OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + + context.getPageSize() + " ROWS ONLY", + CollectionUtils.list(context.getWhereParameter(FieldConstant.ID))); } - + @Override - 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); + public MapperResult findChangeConfigFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + + final Timestamp startTime = (Timestamp) context.getWhereParameter(FieldConstant.START_TIME); + final Timestamp endTime = (Timestamp) context.getWhereParameter(FieldConstant.END_TIME); + + List paramList = new ArrayList<>(); + 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 ? "; + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; + paramList.add(group); } if (!StringUtils.isBlank(tenant)) { where += " AND tenant_id = ? "; + paramList.add(tenant); } if (!StringUtils.isBlank(appName)) { where += " AND app_name = ? "; + paramList.add(appName); } if (startTime != null) { where += " AND gmt_modified >=? "; + paramList.add(startTime); } if (endTime != null) { where += " AND gmt_modified <=? "; + paramList.add(endTime); } - return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + return new MapperResult( + sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY", paramList); } @Override - public String listGroupKeyMd5ByPageFetchRows(int startRow, int pageSize) { - 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 OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize - + " ROWS ONLY ) g, config_info t WHERE g.id = t.id"; + public MapperResult listGroupKeyMd5ByPageFetchRows(MapperContext context) { + + return new MapperResult(" SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified " + + "FROM ( SELECT id FROM config_info ORDER BY id OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + + context.getPageSize() + " ROWS ONLY ) g, config_info t WHERE g.id = t.id", Collections.emptyList()); } - + @Override - public String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize) { + public MapperResult findConfigInfoBaseLikeFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + + List paramList = new ArrayList<>(); final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; - String where = " 1=1 AND tenant_id='" - + NamespaceUtil.getNamespaceDefaultId() - + "' "; - if (!StringUtils.isBlank(params.get(DATA_ID))) { + String where = " 1=1 AND tenant_id='" + NamespaceUtil.getNamespaceDefaultId() + "' "; + if (!StringUtils.isBlank(dataId)) { where += " AND data_id LIKE ? "; + paramList.add(dataId); } - if (!StringUtils.isBlank(params.get(GROUP))) { + if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; + paramList.add(group); } - if (!StringUtils.isBlank(params.get(CONTENT))) { + if (!StringUtils.isBlank(tenant)) { where += " AND content LIKE ? "; + paramList.add(tenant); } - return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + return new MapperResult( + sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY", paramList); } - + @Override - 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); - final String content = params.get(CONTENT); + public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + + List paramList = new ArrayList<>(); + final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id=? "); + paramList.add(tenantId); 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); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sql + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + return new MapperResult( + sql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY", paramList); } @Override - 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"; + public MapperResult findConfigInfoBaseByGroupFetchRows(MapperContext context) { + return new MapperResult( + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? " + "AND tenant_id=?" + " OFFSET " + + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY", + CollectionUtils.list(context.getWhereParameter(FieldConstant.GROUP_ID), + context.getWhereParameter(FieldConstant.TENANT_ID))); } - + @Override - 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); - final String group = params.get(GROUP); + public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { + + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + + List paramList = new ArrayList<>(); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id LIKE ? "); + paramList.add(tenantId); if (!StringUtils.isBlank(dataId)) { where.append(" AND data_id LIKE ? "); + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where.append(" AND group_id LIKE ? "); + paramList.add(group); } if (!StringUtils.isBlank(appName)) { where.append(" AND app_name = ? "); + paramList.add(appName); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + String sql = + sqlFetchRows + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY"; + return new MapperResult(sql, paramList); } @Override - public String findAllConfigInfoFetchRows(int startRow, int pageSize) { - return " SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + public MapperResult findAllConfigInfoFetchRows(MapperContext context) { + return new MapperResult(" 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 OFFSET ? ROWS FETCH NEXT ? ROWS ONLY )" - + " g, config_info t WHERE g.id = t.id "; + + " g, config_info t WHERE g.id = t.id ", + CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID), context.getStartRow(), + context.getPageSize())); } - + @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 57db8f53f1d..3134871e47e 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 @@ -19,6 +19,10 @@ import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; + +import java.util.Collections; /** * The derby implementation of ConfigInfoTagMapper. @@ -27,14 +31,16 @@ **/ public class ConfigInfoTagMapperByDerby extends AbstractMapper implements ConfigInfoTagMapper { - + @Override - 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 OFFSET " + startRow + " ROWS FETCH NEXT " - + pageSize + " ROWS ONLY ) " + " g, config_info_tag t WHERE g.id = t.id"; + public MapperResult findAllConfigInfoTagForDumpAllFetchRows(MapperContext context) { + String sql = "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 OFFSET " + context.getStartRow() + + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY ) " + + " g, config_info_tag t WHERE g.id = t.id"; + return new MapperResult(sql, Collections.emptyList()); } - + @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 913f392d9e3..d8de7c03762 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 @@ -18,10 +18,14 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; /** * The derby implementation of ConfigTagsRelationMapper. @@ -30,81 +34,104 @@ **/ public class ConfigInfoTagsRelationMapperByDerby extends AbstractMapper implements ConfigTagsRelationMapper { - + @Override - 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"); - final String content = params.get("content"); + public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); StringBuilder where = new StringBuilder(" WHERE "); - final String sql = + final String baseSql = "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=? "); + paramList.add(tenantId); 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); } if (!StringUtils.isBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); + paramList.add(tagArr[i]); } where.append(") "); - return sql + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + String sql = baseSql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY"; + return new MapperResult(sql, paramList); } @Override - 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"); - final String group = params.get("group"); + public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); StringBuilder where = new StringBuilder(" WHERE "); - final String sqlFetchRows = + final String baseSql = "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 ? "); + paramList.add(tenantId); + if (!StringUtils.isBlank(dataId)) { where.append(" AND a.data_id LIKE ? "); + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where.append(" AND a.group_id LIKE ? "); + paramList.add(group); } if (!StringUtils.isBlank(appName)) { where.append(" AND a.app_name = ? "); + paramList.add(appName); } if (!StringUtils.isBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); + paramList.add(tagArr[i]); } where.append(") "); - return sqlFetchRows + where + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"; + String sql = baseSql + where + " OFFSET " + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + + " ROWS ONLY"; + return new MapperResult(sql, paramList); } - + @Override public String getDataSource() { return DataSourceConstant.DERBY; diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerby.java index 241b2ca2ed4..39a74583c4b 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerby.java @@ -16,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.GroupCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The derby implementation of {@link GroupCapacityMapper}. @@ -26,14 +30,16 @@ * @author lixiaoshuang */ public class GroupCapacityMapperByDerby extends AbstractMapper implements GroupCapacityMapper { - + @Override public String getDataSource() { return DataSourceConstant.DERBY; } - + @Override - public String selectGroupInfoBySize() { - return "SELECT id, group_id FROM group_capacity WHERE id > ? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"; + public MapperResult selectGroupInfoBySize(MapperContext context) { + String sql = "SELECT id, group_id FROM group_capacity WHERE id > ? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"; + return new MapperResult(sql, + CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), context.getPageSize())); } } 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 35f48359540..90fd5303a64 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,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The derby implementation of ConfigInfoMapper. @@ -29,20 +33,23 @@ public class HistoryConfigInfoMapperByDerby extends AbstractMapper implements HistoryConfigInfoMapper { @Override - public String removeConfigHistory() { - return "DELETE FROM his_config_info WHERE id IN( " + public MapperResult removeConfigHistory(MapperContext context) { + 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)"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.START_TIME), + context.getWhereParameter(FieldConstant.LIMIT_SIZE))); } - + @Override - public String pageFindConfigHistoryFetchRows(int pageNo, int pageSize) { - final int offset = (pageNo - 1) * pageSize; - final int limit = 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 OFFSET " - + offset + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; + public MapperResult pageFindConfigHistoryFetchRows(MapperContext context) { + String sql = + "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 OFFSET " + + context.getStartRow() + " ROWS FETCH NEXT " + context.getPageSize() + " ROWS ONLY"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.DATA_ID), + context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID))); } - + @Override public String getDataSource() { return DataSourceConstant.DERBY; diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerby.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerby.java index 7a72ec4369a..d185ccade6a 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerby.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerby.java @@ -16,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.TenantCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The derby implementation of TenantCapacityMapper. @@ -27,15 +31,17 @@ **/ public class TenantCapacityMapperByDerby extends AbstractMapper implements TenantCapacityMapper { - + @Override public String getDataSource() { return DataSourceConstant.DERBY; } - + @Override - public String getCapacityList4CorrectUsage() { - return "SELECT id, tenant_id FROM tenant_capacity WHERE id>? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"; + public MapperResult getCapacityList4CorrectUsage(MapperContext context) { + String sql = "SELECT id, tenant_id FROM tenant_capacity WHERE id>? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), + context.getWhereParameter(FieldConstant.LIMIT_SIZE))); } - + } 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 256a9e03fe3..e4d6e77648c 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 @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper; import com.alibaba.nacos.plugin.datasource.model.MapperContext; @@ -34,14 +35,15 @@ public class ConfigInfoAggrMapperByMySql extends AbstractMapper implements Confi @Override public MapperResult findConfigInfoAggrByPageFetchRows(MapperContext context) { - Integer startRow = (Integer) context.getWhereParameter("startRow"); - Integer pageSize = (Integer) context.getWhereParameter("pageSize"); - String dataId = (String) context.getWhereParameter("data_id"); - String groupId = (String) context.getWhereParameter("group_id"); - String tenantId = (String) context.getWhereParameter("tenant_id"); + Integer startRow = context.getStartRow(); + Integer pageSize = context.getPageSize(); + String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + String groupId = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); - 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 LIMIT " + startRow + "," + pageSize; + 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 LIMIT " + startRow + "," + pageSize; List paramList = CollectionUtils.list(dataId, groupId, tenantId); return new MapperResult(sql, paramList); } 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 48dbfad0c5e..476a315ecb1 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 @@ -16,14 +16,20 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.NamespaceUtil; import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import java.sql.Timestamp; -import java.util.Map; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * The mysql implementation of ConfigInfoMapper. @@ -42,164 +48,227 @@ public class ConfigInfoMapperByMySql extends AbstractMapper implements ConfigInf private static final String CONTENT = "content"; private static final String TENANT = "tenant"; - + @Override - 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; + public MapperResult findConfigInfoByAppFetchRows(MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info" + + " WHERE tenant_id LIKE ? AND app_name= ?" + " LIMIT " + context.getStartRow() + "," + + context.getPageSize(); + return new MapperResult(sql, CollectionUtils.list(tenantId, appName)); } - + @Override - public String getTenantIdList(int startRow, int pageSize) { - return "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY tenant_id LIMIT " + startRow + "," - + pageSize; + public MapperResult getTenantIdList(MapperContext context) { + String sql = "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() + + "' GROUP BY tenant_id LIMIT " + context.getStartRow() + "," + context.getPageSize(); + return new MapperResult(sql, Collections.emptyList()); } @Override - public String getGroupIdList(int startRow, int pageSize) { - return "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() - + "' GROUP BY group_id LIMIT " + startRow + "," - + pageSize; + public MapperResult getGroupIdList(MapperContext context) { + String sql = "SELECT group_id FROM config_info WHERE tenant_id ='" + NamespaceUtil.getNamespaceDefaultId() + + "' GROUP BY group_id LIMIT " + context.getStartRow() + "," + context.getPageSize(); + return new MapperResult(sql, Collections.emptyList()); } @Override - public String findAllConfigKey(int startRow, int pageSize) { - return " SELECT data_id,group_id,app_name FROM ( " - + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT " + startRow + "," + pageSize - + " )" + " g, config_info t WHERE g.id = t.id "; + public MapperResult findAllConfigKey(MapperContext context) { + String sql = " SELECT data_id,group_id,app_name FROM ( " + + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT " + context.getStartRow() + "," + + context.getPageSize() + " )" + " g, config_info t WHERE g.id = t.id "; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID))); } @Override - public String findAllConfigInfoBaseFetchRows(int startRow, int pageSize) { - return "SELECT t.id,data_id,group_id,content,md5" + public MapperResult findAllConfigInfoBaseFetchRows(MapperContext context) { + String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + + String sql = "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 "; + return new MapperResult(sql, Collections.emptyList()); } @Override - public String findAllConfigInfoFragment(int startRow, int pageSize) { - return "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 " + startRow + "," + pageSize; + public MapperResult findAllConfigInfoFragment(MapperContext context) { + + String sql = "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 " + context.getStartRow() + "," + + context.getPageSize(); + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID))); } - + @Override - 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); + public MapperResult findChangeConfigFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant; + final Timestamp startTime = (Timestamp) context.getWhereParameter(FieldConstant.START_TIME); + final Timestamp endTime = (Timestamp) context.getWhereParameter(FieldConstant.END_TIME); + + List paramList = new ArrayList<>(); + 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 ? "; + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; + paramList.add(group); } if (!StringUtils.isBlank(tenantTmp)) { where += " AND tenant_id = ? "; + paramList.add(tenantTmp); } if (!StringUtils.isBlank(appName)) { where += " AND app_name = ? "; + paramList.add(appName); } if (startTime != null) { where += " AND gmt_modified >=? "; + paramList.add(startTime); } if (endTime != null) { where += " AND gmt_modified <=? "; + paramList.add(endTime); } - return sqlFetchRows + where + " AND id > " + lastMaxId + " ORDER BY id ASC" + " LIMIT " + 0 + "," + pageSize; + return new MapperResult( + sqlFetchRows + where + " AND id > " + context.getWhereParameter(FieldConstant.LAST_MAX_ID) + + " ORDER BY id ASC" + " LIMIT " + 0 + "," + context.getPageSize(), paramList); } @Override - public String listGroupKeyMd5ByPageFetchRows(int startRow, int pageSize) { - return "SELECT t.id,data_id,group_id,tenant_id,app_name,md5,type,gmt_modified,encrypted_data_key FROM " - + "( SELECT id FROM config_info ORDER BY id LIMIT " + startRow + "," + pageSize - + " ) g, config_info t WHERE g.id = t.id"; + public MapperResult listGroupKeyMd5ByPageFetchRows(MapperContext context) { + String sql = "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 " + context.getStartRow() + "," + + context.getPageSize() + " ) g, config_info t WHERE g.id = t.id"; + return new MapperResult(sql, Collections.emptyList()); } - + @Override - public String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize) { + public MapperResult findConfigInfoBaseLikeFetchRows(MapperContext context) { + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE "; String where = " 1=1 AND tenant_id='" + NamespaceUtil.getNamespaceDefaultId() + "' "; - if (!StringUtils.isBlank(params.get(DATA_ID))) { + + List paramList = new ArrayList<>(); + + if (!StringUtils.isBlank(dataId)) { where += " AND data_id LIKE ? "; + paramList.add(dataId); } - if (!StringUtils.isBlank(params.get(GROUP))) { + if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE "; + paramList.add(group); } - if (!StringUtils.isBlank(params.get(CONTENT))) { + if (!StringUtils.isBlank(content)) { where += " AND content LIKE ? "; + paramList.add(content); } - return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; + return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList); } - + @Override - 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); - final String content = params.get(CONTENT); + public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + + List paramList = new ArrayList<>(); + final String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id=? "); + paramList.add(tenant); 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); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sql + where + " LIMIT " + startRow + "," + pageSize; + return new MapperResult(sql + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList); } @Override - 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; + public MapperResult findConfigInfoBaseByGroupFetchRows(MapperContext context) { + String sql = "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=?" + " LIMIT " + + context.getStartRow() + "," + context.getPageSize(); + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.GROUP_ID), + context.getWhereParameter(FieldConstant.TENANT_ID))); } @Override - 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); - final String content = params.get(CONTENT); + public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + + List paramList = new ArrayList<>(); + final String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id LIKE ? "); + paramList.add(tenant); + if (!StringUtils.isBlank(dataId)) { where.append(" AND data_id LIKE ? "); + paramList.add(dataId); + } if (!StringUtils.isBlank(group)) { where.append(" AND group_id LIKE ? "); + paramList.add(group); } if (!StringUtils.isBlank(appName)) { where.append(" AND app_name = ? "); + paramList.add(appName); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; + return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList); } @Override - public String findAllConfigInfoFetchRows(int startRow, int pageSize) { - return "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + public MapperResult findAllConfigInfoFetchRows(MapperContext context) { + String sql = "SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" + " g, config_info t WHERE g.id = t.id "; + return new MapperResult(sql, + CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID), context.getStartRow(), + context.getPageSize())); } - + @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 2f4133d6608..25dbb0720c2 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 @@ -19,6 +19,10 @@ import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoTagMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; + +import java.util.Collections; /** * The mysql implementation of ConfigInfoTagMapper. @@ -27,14 +31,15 @@ **/ public class ConfigInfoTagMapperByMySql extends AbstractMapper implements ConfigInfoTagMapper { - + @Override - 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 " + startRow + "," + pageSize + " ) " - + "g, config_info_tag t WHERE g.id = t.id "; + public MapperResult findAllConfigInfoTagForDumpAllFetchRows(MapperContext context) { + String sql = " 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 " + context.getStartRow() + "," + + context.getPageSize() + " ) " + "g, config_info_tag t WHERE g.id = t.id "; + return new MapperResult(sql, Collections.emptyList()); } - + @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 ea7cbd2b49c..728aee2f442 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 @@ -18,10 +18,14 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; /** * The mysql implementation of ConfigTagsRelationMapper. @@ -32,75 +36,97 @@ public class ConfigTagsRelationMapperByMySql extends AbstractMapper implements ConfigTagsRelationMapper { @Override - 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"); - final String content = params.get("content"); + public MapperResult findConfigInfo4PageFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); StringBuilder where = new StringBuilder(" WHERE "); final String sql = "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + "config_tags_relation b ON a.id=b.id"; where.append(" a.tenant_id=? "); + paramList.add(tenant); 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); } if (!StringUtils.isBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); + paramList.add(tagArr[i]); } where.append(") "); - return sql + where + " LIMIT " + startRow + "," + pageSize; + return new MapperResult(sql + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList); } @Override - 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"); - final String group = params.get("group"); + public MapperResult findConfigInfoLike4PageFetchRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); + StringBuilder where = new StringBuilder(" WHERE "); final String sqlFetchRows = "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content " + "FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; where.append(" a.tenant_id LIKE ? "); + paramList.add(tenant); if (!StringUtils.isBlank(dataId)) { where.append(" AND a.data_id LIKE ? "); + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where.append(" AND a.group_id LIKE ? "); + paramList.add(group); } if (!StringUtils.isBlank(appName)) { where.append(" AND a.app_name = ? "); + paramList.add(appName); } if (!StringUtils.isBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); + paramList.add(tagArr[i]); } where.append(") "); - return sqlFetchRows + where + " LIMIT " + startRow + "," + pageSize; + return new MapperResult(sqlFetchRows + where + " LIMIT " + context.getStartRow() + "," + context.getPageSize(), + paramList); } @Override diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysql.java index e2b758362d8..3c4fc9460b1 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysql.java @@ -16,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.GroupCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The derby implementation of {@link GroupCapacityMapper}. @@ -26,15 +30,16 @@ * @author lixiaoshuang */ public class GroupCapacityMapperByMysql extends AbstractMapper implements GroupCapacityMapper { - + @Override public String getDataSource() { return DataSourceConstant.MYSQL; } - + @Override - public String selectGroupInfoBySize() { - return "SELECT id, group_id FROM group_capacity WHERE id > ? LIMIT ?"; + public MapperResult selectGroupInfoBySize(MapperContext context) { + String sql = "SELECT id, group_id FROM group_capacity WHERE id > ? LIMIT ?"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), context.getPageSize())); } } 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 472ed068010..ecbbe700f9c 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,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The mysql implementation of HistoryConfigInfoMapper. @@ -29,18 +33,22 @@ public class HistoryConfigInfoMapperByMySql extends AbstractMapper implements HistoryConfigInfoMapper { @Override - public String removeConfigHistory() { - return "DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ?"; + public MapperResult removeConfigHistory(MapperContext context) { + String sql = "DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ?"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.START_TIME), + context.getWhereParameter(FieldConstant.LIMIT_SIZE))); } - + @Override - public String pageFindConfigHistoryFetchRows(int pageNo, int pageSize) { - final int offset = (pageNo - 1) * pageSize; - final int limit = 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 LIMIT " + offset + "," + limit; + public MapperResult pageFindConfigHistoryFetchRows(MapperContext context) { + String sql = + "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 LIMIT " + + context.getStartRow() + "," + context.getPageSize(); + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.DATA_ID), + context.getWhereParameter(FieldConstant.GROUP_ID), context.getWhereParameter(FieldConstant.TENANT_ID))); } - + @Override public String getDataSource() { return DataSourceConstant.MYSQL; diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySql.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySql.java index 56f62e27f1d..7b8dc09417e 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySql.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySql.java @@ -16,9 +16,13 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.mapper.AbstractMapper; import com.alibaba.nacos.plugin.datasource.mapper.TenantCapacityMapper; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The mysql implementation of TenantCapacityMapper. @@ -27,15 +31,17 @@ **/ public class TenantCapacityMapperByMySql extends AbstractMapper implements TenantCapacityMapper { - + @Override public String getDataSource() { return DataSourceConstant.MYSQL; } - + @Override - public String getCapacityList4CorrectUsage() { - return "SELECT id, tenant_id FROM tenant_capacity WHERE id>? LIMIT ?"; + public MapperResult getCapacityList4CorrectUsage(MapperContext context) { + String sql = "SELECT id, tenant_id FROM tenant_capacity WHERE id>? LIMIT ?"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.ID), + context.getWhereParameter(FieldConstant.LIMIT_SIZE))); } - + } 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 f385913b56c..0b3bae1fa0e 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 @@ -17,11 +17,11 @@ package com.alibaba.nacos.plugin.datasource.mapper; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; +import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import com.alibaba.nacos.plugin.datasource.constants.TableConstant; - import java.util.ArrayList; import java.util.List; @@ -42,16 +42,16 @@ public interface ConfigInfoAggrMapper extends Mapper { * @return The sql of deleting aggregated data in bulk. */ default MapperResult batchRemoveAggr(MapperContext context) { - final List datumList = (List) context.getWhereParameter("datum_id"); - final String dataId = (String) context.getWhereParameter("data_id"); - final String group = (String) context.getWhereParameter("group_id"); - final String tenantTmp = (String) context.getWhereParameter("tenant_id"); - + final List datumList = (List) context.getWhereParameter(FieldConstant.DATUM_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String tenantTmp = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + List paramList = new ArrayList<>(); paramList.add(dataId); paramList.add(group); paramList.add(tenantTmp); - + final StringBuilder placeholderString = new StringBuilder(); for (int i = 0; i < datumList.size(); i++) { if (i != 0) { @@ -60,13 +60,14 @@ default MapperResult batchRemoveAggr(MapperContext context) { placeholderString.append('?'); paramList.add(datumList.get(i)); } - - String sql = "DELETE FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id IN (" - + placeholderString + ")"; - + + String sql = + "DELETE FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id IN (" + + placeholderString + ")"; + return new MapperResult(sql, paramList); } - + /** * Get count of aggregation config info. * The default sql: @@ -76,15 +77,14 @@ default MapperResult batchRemoveAggr(MapperContext context) { * @return The sql of getting count of aggregation config info. */ default MapperResult aggrConfigInfoCount(MapperContext context) { - List datumIds = (List) context.getWhereParameter("datum_id"); - Boolean isIn = (Boolean) context.getWhereParameter("isIn"); - String dataId = (String) context.getWhereParameter("data_id"); - String group = (String) context.getWhereParameter("group_id"); - String tenantTmp = (String) context.getWhereParameter("tenant_id"); - + final List datumIds = (List) context.getWhereParameter(FieldConstant.DATUM_ID); + final Boolean isIn = (Boolean) context.getWhereParameter(FieldConstant.IS_IN); + String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + String tenantTmp = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + List paramList = CollectionUtils.list(dataId, group, tenantTmp); - paramList.addAll(datumIds); - + StringBuilder sql = new StringBuilder( "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? AND datum_id"); if (isIn) { @@ -97,9 +97,10 @@ default MapperResult aggrConfigInfoCount(MapperContext context) { sql.append(", "); } sql.append('?'); + paramList.add(datumIds.get(i)); } sql.append(')'); - + return new MapperResult(sql.toString(), paramList); } @@ -113,14 +114,14 @@ default MapperResult aggrConfigInfoCount(MapperContext context) { * @return The sql of finding all data before aggregation under a dataId. */ default MapperResult findConfigInfoAggrIsOrdered(MapperContext context) { - String dataId = (String) context.getWhereParameter("data_id"); - String groupId = (String) context.getWhereParameter("group_id"); - String tenantId = (String) context.getWhereParameter("tenant_id"); - + String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + String groupId = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + 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"; List paramList = CollectionUtils.list(dataId, groupId, tenantId); - + return new MapperResult(sql, paramList); } @@ -140,10 +141,12 @@ default MapperResult findConfigInfoAggrIsOrdered(MapperContext context) { * The default sql: * SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr * + * @param context sql paramMap * @return The sql of finding all aggregated data sets. */ - default String findAllAggrGroupByDistinct() { - return "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"; + default MapperResult findAllAggrGroupByDistinct(MapperContext context) { + return new MapperResult("SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr", + CollectionUtils.list()); } /** 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 5463ba1f451..511ca2bf57b 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 @@ -16,6 +16,7 @@ package com.alibaba.nacos.plugin.datasource.mapper; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; @@ -46,18 +47,18 @@ default MapperResult updateConfigInfo4BetaCas(MapperContext context) { List paramList = new ArrayList<>(); - paramList.add(context.getUpdateParameter("content")); - paramList.add(context.getUpdateParameter("md5")); - paramList.add(context.getUpdateParameter("beta_ips")); - paramList.add(context.getUpdateParameter("src_ip")); - paramList.add(context.getUpdateParameter("src_user")); - paramList.add(context.getUpdateParameter("gmt_modified")); - paramList.add(context.getUpdateParameter("app_name")); + paramList.add(context.getUpdateParameter(FieldConstant.CONTENT)); + paramList.add(context.getUpdateParameter(FieldConstant.MD5)); + paramList.add(context.getUpdateParameter(FieldConstant.BETA_IPS)); + paramList.add(context.getUpdateParameter(FieldConstant.SRC_IP)); + paramList.add(context.getUpdateParameter(FieldConstant.SRC_USER)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_MODIFIED)); + paramList.add(context.getUpdateParameter(FieldConstant.APP_NAME)); - paramList.add(context.getWhereParameter("data_id")); - paramList.add(context.getWhereParameter("group_id")); - paramList.add(context.getWhereParameter("tenant_id")); - paramList.add(context.getWhereParameter("md5")); + paramList.add(context.getWhereParameter(FieldConstant.DATA_ID)); + paramList.add(context.getWhereParameter(FieldConstant.GROUP_ID)); + paramList.add(context.getWhereParameter(FieldConstant.TENANT_ID)); + paramList.add(context.getWhereParameter(FieldConstant.MD5)); return new MapperResult(sql, paramList); } 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 648af1abe92..3ce2c7624bd 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 @@ -19,11 +19,15 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.NamespaceUtil; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; -import java.util.Map; /** * The mapper of config info. @@ -32,26 +36,17 @@ **/ public interface ConfigInfoMapper extends Mapper { - - String DATA_ID = "dataId"; - - String GROUP = "group"; - - String APP_NAME = "appName"; - - String CONTENT = "content"; - String TENANT = "tenant"; - /** * Get the maxId. * The default sql: * SELECT max(id) FROM config_info * + * @param context sql paramMap * @return the sql of getting the maxId. */ - default String findConfigMaxId() { - return "SELECT MAX(id) FROM config_info"; + default MapperResult findConfigMaxId(MapperContext context) { + return new MapperResult("SELECT MAX(id) FROM config_info", Collections.emptyList()); } /** @@ -59,10 +54,11 @@ default String findConfigMaxId() { * The default sql: * SELECT DISTINCT data_id, group_id FROM config_info * + * @param context sql paramMap * @return The sql of finding all dataId and group. */ - default String findAllDataIdAndGroup() { - return "SELECT DISTINCT data_id, group_id FROM config_info"; + default MapperResult findAllDataIdAndGroup(MapperContext context) { + return new MapperResult("SELECT DISTINCT data_id, group_id FROM config_info", Collections.emptyList()); } /** @@ -70,32 +66,37 @@ default String findAllDataIdAndGroup() { * The default sql: * SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name=? * + * @param context sql paramMap * @return The sql of querying the count of config_info. */ - default String findConfigInfoByAppCountRows() { - return "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"; + default MapperResult findConfigInfoByAppCountRows(MapperContext context) { + Object tenantId = context.getWhereParameter(FieldConstant.TENANT_ID); + Object appName = context.getWhereParameter(FieldConstant.APP_NAME); + String sql = "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"; + return new MapperResult(sql, CollectionUtils.list(tenantId, appName)); } /** - * Query configuration information based on group. - * The default sql: - * SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name=? + * Query configuration information based on group.
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. + * @param context The context of startRow, pageSize * @return The sql of querying configration information based on group. */ - String findConfigInfoByAppFetchRows(int startRow, int pageSize); + MapperResult findConfigInfoByAppFetchRows(MapperContext context); /** * Returns the number of configuration items. * The default sql: * SELECT count(*) FROM config_info WHERE tenant_id LIKE ? * + * @param context sql paramMap * @return The sql of querying the number of configuration items. */ - default String configInfoLikeTenantCount() { - return "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"; + default MapperResult configInfoLikeTenantCount(MapperContext context) { + Object tenantId = context.getWhereParameter(FieldConstant.TENANT_ID); + String sql = "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"; + return new MapperResult(sql, Collections.singletonList(tenantId)); } /** @@ -103,22 +104,21 @@ default String configInfoLikeTenantCount() { * The default sql: * SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id LIMIT startRow, pageSize * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return The sql of getting tenant id list by page. */ - String getTenantIdList(int startRow, int pageSize); + MapperResult getTenantIdList(MapperContext context); /** * Get group id list by page. * The default sql: - * SELECT group_id FROM config_info WHERE tenant_id ='{defaultNamespaceId}' GROUP BY group_id LIMIT startRow, pageSize + * SELECT group_id FROM config_info WHERE tenant_id ='{defaultNamespaceId}' GROUP BY group_id LIMIT startRow, + * pageSize * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return The sql of getting group id list by page. */ - String getGroupIdList(int startRow, int pageSize); + MapperResult getGroupIdList(MapperContext context); /** * Query all configuration information by page. @@ -127,11 +127,10 @@ default String configInfoLikeTenantCount() { * SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT startRow, pageSize ) g, * config_info t WHERE g.id = t.id " * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return The sql of querying all configuration information. */ - String findAllConfigKey(int startRow, int pageSize); + MapperResult findAllConfigKey(MapperContext context); /** * Query all configuration information by page. @@ -140,11 +139,10 @@ default String configInfoLikeTenantCount() { * 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. + * @param context The context of startRow, pageSize * @return The sql of querying all configuration information by page. */ - String findAllConfigInfoBaseFetchRows(int startRow, int pageSize); + MapperResult findAllConfigInfoBaseFetchRows(MapperContext context); /** * Query all config info. @@ -152,23 +150,24 @@ default String configInfoLikeTenantCount() { * 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 startRow,pageSize * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return The sql of querying all config info. */ - String findAllConfigInfoFragment(int startRow, int pageSize); + MapperResult findAllConfigInfoFragment(MapperContext context); /** - * Query change config. - * The default sql: - * SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified,encrypted_data_key - * FROM config_info WHERE gmt_modified >=? AND gmt_modified <= ? + * Query change config.
The default sql: SELECT data_id, group_id, tenant_id, app_name, content, + * gmt_modified,encrypted_data_key FROM config_info WHERE gmt_modified >=? AND gmt_modified <= ? * + * @param context sql paramMap * @return The sql of querying change config. */ - default String findChangeConfig() { - return "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified, encrypted_data_key FROM config_info WHERE " - + "gmt_modified >= ? AND gmt_modified <= ?"; + default MapperResult findChangeConfig(MapperContext context) { + String sql = + "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified, encrypted_data_key FROM config_info WHERE " + + "gmt_modified >= ? AND gmt_modified <= ?"; + return new MapperResult(sql, CollectionUtils.list(context.getWhereParameter(FieldConstant.START_TIME), + context.getWhereParameter(FieldConstant.END_TIME))); } /** @@ -176,42 +175,50 @@ default String findChangeConfig() { * The default sql: * SELECT count(*) FROM config_info WHERE ... * - * @param params The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, endTime, content), - * the value is the key's value. - * @param startTime start time - * @param endTime end time + * @param context The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, + * endTime, content), the value is the key's value. * @return The sql of getting the count of config information. */ - default String findChangeConfigCountRows(Map params, final Timestamp startTime, - final Timestamp endTime) { - final String tenant = params.get(TENANT); - final String dataId = params.get(DATA_ID); - final String group = params.get(GROUP); - final String appName = params.get(APP_NAME); + default MapperResult findChangeConfigCountRows(MapperContext context) { + final String tenant = (String) context.getWhereParameter(FieldConstant.TENANT); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + + final Timestamp startTime = (Timestamp) context.getWhereParameter(FieldConstant.START_TIME); + final Timestamp endTime = (Timestamp) context.getWhereParameter(FieldConstant.END_TIME); + + List paramList = new ArrayList<>(); final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; String where = " 1=1 "; if (!StringUtils.isBlank(dataId)) { where += " AND data_id LIKE ? "; + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; + paramList.add(group); } if (!StringUtils.isBlank(tenant)) { where += " AND tenant_id = ? "; + paramList.add(tenant); } if (!StringUtils.isBlank(appName)) { where += " AND app_name = ? "; + paramList.add(appName); } if (startTime != null) { where += " AND gmt_modified >=? "; + paramList.add(startTime); } if (endTime != null) { where += " AND gmt_modified <=? "; + paramList.add(endTime); } - return sqlCountRows + where; + return new MapperResult(sqlCountRows + where, paramList); } /** @@ -219,17 +226,11 @@ default String findChangeConfigCountRows(Map params, final Times * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info WHERE ... * - * @param params The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, endTime, content), - * the value is the key's value. - * @param startTime start time - * @param endTime end time - * @param startRow The start index. - * @param pageSize The size of page. - * @param lastMaxId The max id. + * @param context The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, + * startTime, endTime, content, startTime, endTime), the value is the key's value. * @return The sql of getting config information according to the time period. */ - String findChangeConfigFetchRows(Map params, final Timestamp startTime, final Timestamp endTime, - int startRow, int pageSize, long lastMaxId); + MapperResult findChangeConfigFetchRows(MapperContext context); /** * list group key md5 by page. @@ -238,11 +239,10 @@ String findChangeConfigFetchRows(Map params, final Timestamp sta * 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. + * @param context The context of startRow, pageSize * @return The sql of listing group key md5 by page. */ - String listGroupKeyMd5ByPageFetchRows(int startRow, int pageSize); + MapperResult listGroupKeyMd5ByPageFetchRows(MapperContext context); /** * query all configuration information according to group, appName, tenant (for export). @@ -251,15 +251,18 @@ String findChangeConfigFetchRows(Map params, final Timestamp sta * src_user,src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key * FROM config_info WHERE ... * - * @param ids ids - * @param params The map of params, the key is the parameter name(dataId, group, appName), - * the value is the key's value. + * @param context The map of params, the key is the parameter name(dataId, group, appName), the value is the key's + * value. * @return Collection of ConfigInfo objects */ - default String findAllConfigInfo4Export(List ids, Map params) { + default MapperResult findAllConfigInfo4Export(MapperContext context) { + List ids = (List) context.getWhereParameter(FieldConstant.IDS); + String sql = "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified," + "src_user,src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); + + List paramList = new ArrayList<>(); if (!CollectionUtils.isEmpty(ids)) { where.append(" id IN ("); for (int i = 0; i < ids.size(); i++) { @@ -267,21 +270,31 @@ default String findAllConfigInfo4Export(List ids, Map para where.append(", "); } where.append('?'); + paramList.add(ids.get(i)); } where.append(") "); } else { where.append(" tenant_id = ? "); - if (StringUtils.isNotBlank(params.get(DATA_ID))) { + paramList.add(context.getWhereParameter(FieldConstant.TENANT_ID)); + + String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + + if (StringUtils.isNotBlank(dataId)) { where.append(" AND data_id LIKE ? "); + paramList.add(dataId); } - if (StringUtils.isNotBlank(params.get(GROUP))) { + if (StringUtils.isNotBlank(group)) { where.append(" AND group_id= ? "); + paramList.add(group); } - if (StringUtils.isNotBlank(params.get(APP_NAME))) { + if (StringUtils.isNotBlank(appName)) { where.append(" AND app_name= ? "); + paramList.add(appName); } } - return sql + where; + return new MapperResult(sql + where, paramList); } /** @@ -289,26 +302,32 @@ default String findAllConfigInfo4Export(List ids, Map para * The default sql: * SELECT count(*) FROM config_info WHERE ... * - * @param params The map of params, the key is the parameter name(dataId, groupId, tenant_id, content), - * the value is the arbitrary object. + * @param context The map of params, the key is the parameter name(dataId, groupId, tenant_id, content), the value + * is the arbitrary object. * @return The sql of getting the count of config information. */ - default String findConfigInfoBaseLikeCountRows(Map params) { + default MapperResult findConfigInfoBaseLikeCountRows(MapperContext context) { + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + + final List paramList = new ArrayList<>(); final String sqlCountRows = "SELECT count(*) FROM config_info WHERE "; - String where = " 1=1 AND tenant_id='" - + NamespaceUtil.getNamespaceDefaultId() - + "' "; - - if (!StringUtils.isBlank(params.get(DATA_ID))) { + String where = " 1=1 AND tenant_id='" + NamespaceUtil.getNamespaceDefaultId() + "' "; + + if (!StringUtils.isBlank(dataId)) { where += " AND data_id LIKE ? "; + paramList.add(dataId); } - if (!StringUtils.isBlank(params.get(GROUP))) { + if (!StringUtils.isBlank(group)) { where += " AND group_id LIKE ? "; + paramList.add(group); } - if (!StringUtils.isBlank(params.get(CONTENT))) { + if (!StringUtils.isBlank(content)) { where += " AND content LIKE ? "; + paramList.add(content); } - return sqlCountRows + where; + return new MapperResult(sqlCountRows + where, paramList); } /** @@ -316,43 +335,49 @@ default String findConfigInfoBaseLikeCountRows(Map params) { * The default sql: * SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE ... * - * @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. + * @param context The map of params, the key is the parameter name(dataId, groupId, tenant_id, content), the value + * is the key's value. * @return The sql of getting the config information. */ - String findConfigInfoBaseLikeFetchRows(Map params, int startRow, int pageSize); + MapperResult findConfigInfoBaseLikeFetchRows(MapperContext context); /** * find the count of config info. * The default sql: * SELECT count(*) FROM config_info ... * - * @param params The mpa of dataId, groupId and appName. + * @param context The mpa of dataId, groupId and appName. * @return The count of config info. */ - default String findConfigInfo4PageCountRows(Map params) { - final String appName = params.get(APP_NAME); - final String dataId = params.get(DATA_ID); - final String group = params.get(GROUP); - final String content = params.get(CONTENT); + default MapperResult findConfigInfo4PageCountRows(MapperContext context) { + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final List paramList = new ArrayList<>(); + final String sqlCount = "SELECT count(*) FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id=? "); + paramList.add(tenantId); 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); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sqlCount + where; + return new MapperResult(sqlCount + where, paramList); } /** @@ -360,119 +385,129 @@ default String findConfigInfo4PageCountRows(Map params) { * The default sql: * SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info ... * - * @param params The mpa of dataId, groupId and appName. - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The mpa of dataId, groupId and appName. * @return The sql of finding config info. */ - String findConfigInfo4PageFetchRows(Map params, int startRow, int pageSize); + MapperResult findConfigInfo4PageFetchRows(MapperContext context); /** * Query configuration information based on group. * The default sql: * SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return Query configuration information based on group. */ - String findConfigInfoBaseByGroupFetchRows(int startRow, int pageSize); + MapperResult findConfigInfoBaseByGroupFetchRows(MapperContext context); /** * Query config info count. * The default sql: * SELECT count(*) FROM config_info ... * - * @param params The map of dataId, group, appName, content + * @param context The map of dataId, group, appName, content * @return The sql of querying config info count */ - default String findConfigInfoLike4PageCountRows(Map params) { - final String appName = params.get("appName"); - final String content = params.get("content"); - final String dataId = params.get("dataId"); - final String group = params.get(GROUP); + default MapperResult findConfigInfoLike4PageCountRows(MapperContext context) { + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + + final List paramList = new ArrayList<>(); + final String sqlCountRows = "SELECT count(*) FROM config_info"; StringBuilder where = new StringBuilder(" WHERE "); where.append(" tenant_id LIKE ? "); + paramList.add(tenantId); if (!StringUtils.isBlank(dataId)) { where.append(" AND data_id LIKE ? "); + paramList.add(dataId); } if (!StringUtils.isBlank(group)) { where.append(" AND group_id LIKE ? "); + paramList.add(group); } if (!StringUtils.isBlank(appName)) { where.append(" AND app_name = ? "); + paramList.add(appName); } if (!StringUtils.isBlank(content)) { where.append(" AND content LIKE ? "); + paramList.add(content); } - return sqlCountRows + where; + return new MapperResult(sqlCountRows + where, paramList); } /** * Query config info. - * The default sql: - * SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info ... + *
The default sql: + *
SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info ... * - * @param params The map of dataId, group, appName, content - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return The sql of querying config info */ - String findConfigInfoLike4PageFetchRows(Map params, int startRow, int pageSize); + MapperResult findConfigInfoLike4PageFetchRows(MapperContext context); /** * Query all configuration information by page. - * The default sql: - * SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " - * + " FROM ( SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT ?,? )" - * + " g, config_info t WHERE g.id = t.id + *
The default sql: + *
SELECT t.id,data_id,group_id,tenant_id,app_name,content,md5 " + " FROM ( SELECT id FROM config_info WHERE + * tenant_id LIKE ? ORDER BY id LIMIT ?,? )" + " g, config_info t WHERE g.id = t.id * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The context of startRow, pageSize * @return Query all configuration information by page. */ - String findAllConfigInfoFetchRows(int startRow, int pageSize); + MapperResult findAllConfigInfoFetchRows(MapperContext context); /** * find ConfigInfo by ids. - * The default sql: - * SELECT ID,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id IN (...) + *
The default sql: + *
SELECT ID,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id IN (...) * - * @param idSize the size of ids. + * @param context the size of ids. * @return find ConfigInfo by ids. */ - default String findConfigInfosByIds(int idSize) { + default MapperResult findConfigInfosByIds(MapperContext context) { + List ids = (List) context.getWhereParameter(FieldConstant.IDS); StringBuilder sql = new StringBuilder( "SELECT id,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE "); sql.append("id IN ("); - for (int i = 0; i < idSize; i++) { + ArrayList paramList = new ArrayList<>(); + + for (int i = 0; i < ids.size(); i++) { if (i != 0) { sql.append(", "); } sql.append('?'); + paramList.add(ids.get(i)); } sql.append(") "); - return sql.toString(); + return new MapperResult(sql.toString(), paramList); } /** * Remove configuration; database atomic operation, minimum SQL action, no business encapsulation. * - * @param size The size of ids. + * @param context The size of ids. * @return The sql of removing configuration. */ - default String removeConfigInfoByIdsAtomic(int size) { + default MapperResult removeConfigInfoByIdsAtomic(MapperContext context) { + List ids = (List) context.getWhereParameter(FieldConstant.IDS); StringBuilder sql = new StringBuilder("DELETE FROM config_info WHERE "); sql.append("id IN ("); - for (int i = 0; i < size; i++) { + ArrayList paramList = new ArrayList<>(); + + for (int i = 0; i < ids.size(); i++) { if (i != 0) { sql.append(", "); } sql.append('?'); + paramList.add(ids.get(i)); } sql.append(") "); - return sql.toString(); + return new MapperResult(sql.toString(), paramList); } /** @@ -481,12 +516,32 @@ default String removeConfigInfoByIdsAtomic(int size) { * 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='') * + * @param context sql paramMap * @return The sql of updating configuration cas. */ - default String updateConfigInfoAtomicCas() { - return "UPDATE config_info SET " + default MapperResult updateConfigInfoAtomicCas(MapperContext context) { + List paramList = new ArrayList<>(); + + paramList.add(context.getUpdateParameter(FieldConstant.CONTENT)); + paramList.add(context.getUpdateParameter(FieldConstant.MD5)); + paramList.add(context.getUpdateParameter(FieldConstant.SRC_IP)); + paramList.add(context.getUpdateParameter(FieldConstant.SRC_USER)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_MODIFIED)); + paramList.add(context.getUpdateParameter(FieldConstant.APP_NAME)); + paramList.add(context.getUpdateParameter(FieldConstant.C_DESC)); + paramList.add(context.getUpdateParameter(FieldConstant.C_USE)); + paramList.add(context.getUpdateParameter(FieldConstant.EFFECT)); + paramList.add(context.getUpdateParameter(FieldConstant.TYPE)); + paramList.add(context.getUpdateParameter(FieldConstant.C_SCHEMA)); + + paramList.add(context.getWhereParameter(FieldConstant.DATA_ID)); + paramList.add(context.getWhereParameter(FieldConstant.GROUP_ID)); + paramList.add(context.getWhereParameter(FieldConstant.TENANT_ID)); + paramList.add(context.getWhereParameter(FieldConstant.MD5)); + 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='')"; + return new MapperResult(sql, paramList); } /** 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 9ff6f604cd6..628170040d4 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 @@ -16,7 +16,11 @@ package com.alibaba.nacos.plugin.datasource.mapper; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; /** * The config tag info mapper. @@ -32,11 +36,28 @@ public interface ConfigInfoTagMapper extends Mapper { * 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='') * + * @param context sql paramMap * @return The sql of updating tag configuration information. */ - default String updateConfigInfo4TagCas() { - return "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 = '')"; + default MapperResult updateConfigInfo4TagCas(MapperContext context) { + Object content = context.getUpdateParameter(FieldConstant.CONTENT); + Object md5 = context.getUpdateParameter(FieldConstant.MD5); + Object srcIp = context.getUpdateParameter(FieldConstant.SRC_IP); + Object srcUser = context.getUpdateParameter(FieldConstant.SRC_USER); + Object gmtModified = context.getUpdateParameter(FieldConstant.GMT_MODIFIED); + Object appName = context.getUpdateParameter(FieldConstant.APP_NAME); + + Object dataId = context.getWhereParameter(FieldConstant.DATA_ID); + Object groupId = context.getWhereParameter(FieldConstant.GROUP_ID); + Object tenantId = context.getWhereParameter(FieldConstant.TENANT_ID); + Object tagId = context.getWhereParameter(FieldConstant.TAG_ID); + Object oldMd5 = context.getWhereParameter(FieldConstant.MD5); + 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 = '')"; + return new MapperResult(sql, + CollectionUtils.list(content, md5, srcIp, srcUser, gmtModified, appName, dataId, groupId, tenantId, + tagId, oldMd5)); } /** @@ -46,11 +67,10 @@ default String updateConfigInfo4TagCas() { * FROM ( SELECT id FROM config_info_tag ORDER BY id LIMIT startRow,pageSize ) g, * config_info_tag t WHERE g.id = t.id * - * @param startRow The start index. - * @param pageSize The size of page. + * @param context The start index. * @return The sql of querying all tag config info for dump task. */ - String findAllConfigInfoTagForDumpAllFetchRows(int startRow, int pageSize); + MapperResult findAllConfigInfoTagForDumpAllFetchRows(MapperContext context); /** * 获取返回表名. 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 e748709320a..e3b8f90ec83 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 @@ -17,9 +17,13 @@ package com.alibaba.nacos.plugin.datasource.mapper; import com.alibaba.nacos.common.utils.StringUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; /** * The config with tags mapper. @@ -34,42 +38,48 @@ public interface ConfigTagsRelationMapper extends Mapper { * The default sql: * SELECT count(*) FROM config_info WHERE ... * - * @param params The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, endTime, content), - * the value is the key's value. - * @param tagSize the tags name size. + * @param context The map of params, the key is the parameter name(dataId, groupId, tenantId, appName, startTime, + * endTime, content), the value is the key's value. * @return The sql of get config info. */ - default String findConfigInfo4PageCountRows(final Map params, int tagSize) { - final String appName = params.get("appName"); - final String dataId = params.get("dataId"); - final String group = params.get("group"); - final String content = params.get("content"); + default MapperResult findConfigInfo4PageCountRows(final MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); StringBuilder where = new StringBuilder(" WHERE "); final String sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id"; - + where.append(" a.tenant_id=? "); - + if (StringUtils.isNotBlank(dataId)) { where.append(" AND a.data_id=? "); + 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); } if (!StringUtils.isBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); } where.append(") "); - return sqlCount + where; + return new MapperResult(sqlCount + where, paramList); } /** @@ -78,53 +88,60 @@ default String findConfigInfo4PageCountRows(final Map params, in * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN * config_tags_relation b ON a.id=b.i ... * - * @param 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. + * @param context The keys and values are dataId and group. * @return The sql of finding config info. */ - String findConfigInfo4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize); + MapperResult findConfigInfo4PageFetchRows(final MapperContext context); /** * Get the count of config information by config tags relation. * The default sql: * SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id * - * @param params the keys and values are dataId and group. - * @param tagSize the tags name size. + * @param context the keys and values are dataId and group. * @return The sql of getting the count of config information. */ - default String findConfigInfoLike4PageCountRows(final Map params, int tagSize) { - final String appName = params.get("appName"); - final String content = params.get("content"); - final String dataId = params.get("dataId"); - final String group = params.get("group"); + default MapperResult findConfigInfoLike4PageCountRows(final MapperContext context) { + final String appName = (String) context.getWhereParameter(FieldConstant.APP_NAME); + final String tenantId = (String) context.getWhereParameter(FieldConstant.TENANT_ID); + final String dataId = (String) context.getWhereParameter(FieldConstant.DATA_ID); + final String group = (String) context.getWhereParameter(FieldConstant.GROUP_ID); + final String content = (String) context.getWhereParameter(FieldConstant.CONTENT); + final String[] tagArr = (String[]) context.getWhereParameter(FieldConstant.TAG_ARR); + + List paramList = new ArrayList<>(); StringBuilder where = new StringBuilder(" WHERE "); - final String sqlCountRows = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; + final String sqlCount = "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id "; + where.append(" a.tenant_id LIKE ? "); + paramList.add(tenantId); if (!StringUtils.isBlank(dataId)) { where.append(" AND a.data_id LIKE ? "); + paramList.add(dataId); } - if (!StringUtils.isBlank(group)) { + if (StringUtils.isNotBlank(group)) { where.append(" AND a.group_id LIKE ? "); + paramList.add(group); } - if (!StringUtils.isBlank(appName)) { + if (StringUtils.isNotBlank(appName)) { where.append(" AND a.app_name = ? "); + paramList.add(appName); } - if (!StringUtils.isBlank(content)) { + if (StringUtils.isNotBlank(content)) { where.append(" AND a.content LIKE ? "); + paramList.add(content); } - + where.append(" AND b.tag_name IN ("); - for (int i = 0; i < tagSize; i++) { + for (int i = 0; i < tagArr.length; i++) { if (i != 0) { where.append(", "); } where.append('?'); + paramList.add(tagArr[i]); } where.append(") "); - return sqlCountRows + where; + return new MapperResult(sqlCount + where, paramList); } /** @@ -133,13 +150,10 @@ default String findConfigInfoLike4PageCountRows(final Map params * SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content * FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id * - * @param 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. + * @param context the keys and values are dataId and group. * @return The sql of querying config info. */ - String findConfigInfoLike4PageFetchRows(final Map params, int tagSize, int startRow, int pageSize); + MapperResult findConfigInfoLike4PageFetchRows(final MapperContext context); /** * 获取返回表名. diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/GroupCapacityMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/GroupCapacityMapper.java index 5dcd5c244ce..01d8c4355e7 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/GroupCapacityMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/GroupCapacityMapper.java @@ -16,8 +16,15 @@ package com.alibaba.nacos.plugin.datasource.mapper; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.NamespaceUtil; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; + +import java.util.ArrayList; +import java.util.List; /** * The tenant capacity info mapper. @@ -32,11 +39,23 @@ public interface GroupCapacityMapper extends Mapper { *

Example: INSERT INTO group_capacity (group_id, quota,`usage`, `max_size`, max_aggr_count, * max_aggr_size,gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info; * + * @param context sql paramMap * @return sql. */ - default String insertIntoSelect() { - return "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size,gmt_create," - + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info"; + default MapperResult insertIntoSelect(MapperContext context) { + List paramList = new ArrayList<>(); + paramList.add(context.getUpdateParameter(FieldConstant.GROUP_ID)); + paramList.add(context.getUpdateParameter(FieldConstant.QUOTA)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_COUNT)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_CREATE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_MODIFIED)); + + String sql = + "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size,gmt_create," + + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info"; + return new MapperResult(sql, paramList); } /** @@ -48,12 +67,26 @@ default String insertIntoSelect() { * max_aggr_size,gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info where group_id=? * AND tenant_id = '{defaultNamespaceId}'; * + * @param context sql paramMap * @return sql. */ - default String insertIntoSelectByWhere() { - return "INSERT INTO group_capacity (group_id, quota,usage, max_size, max_aggr_count, max_aggr_size, gmt_create," - + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE group_id=? AND tenant_id = '" - + NamespaceUtil.getNamespaceDefaultId() + "'"; + default MapperResult insertIntoSelectByWhere(MapperContext context) { + final String sql = + "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size, gmt_create," + + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE group_id=? AND tenant_id = '" + + NamespaceUtil.getNamespaceDefaultId() + "'"; + List paramList = new ArrayList<>(); + paramList.add(context.getUpdateParameter(FieldConstant.GROUP_ID)); + paramList.add(context.getUpdateParameter(FieldConstant.QUOTA)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_COUNT)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_CREATE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_MODIFIED)); + + paramList.add(context.getWhereParameter(FieldConstant.GROUP_ID)); + + return new MapperResult(sql, paramList); } /** @@ -65,10 +98,15 @@ default String insertIntoSelectByWhere() { * AND * quota = 0; * + * @param context sql paramMap * @return sql. */ - default String incrementUsageByWhereQuotaEqualZero() { - return "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < ? AND quota = 0"; + default MapperResult incrementUsageByWhereQuotaEqualZero(MapperContext context) { + return new MapperResult( + "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < ? AND quota = 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID), + context.getWhereParameter(FieldConstant.USAGE))); } /** @@ -80,10 +118,14 @@ default String incrementUsageByWhereQuotaEqualZero() { * quota * AND quota != 0; * + * @param context sql paramMap * @return sql. */ - default String incrementUsageByWhereQuotaNotEqualZero() { - return "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < quota AND quota != 0"; + default MapperResult incrementUsageByWhereQuotaNotEqualZero(MapperContext context) { + return new MapperResult( + "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < quota AND quota != 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID))); } /** @@ -93,10 +135,13 @@ default String incrementUsageByWhereQuotaNotEqualZero() { * *

Example: UPDATE group_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE group_id = ?; * + * @param context sql paramMap * @return sql. */ - default String incrementUsageByWhere() { - return "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ?"; + default MapperResult incrementUsageByWhere(MapperContext context) { + return new MapperResult("UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ?", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID))); } /** @@ -107,10 +152,14 @@ default String incrementUsageByWhere() { *

Example: UPDATE group_capacity SET `usage` = `usage` - 1, gmt_modified = ? WHERE group_id = ? AND `usage` > * 0; * + * @param context sql paramMap * @return sql. */ - default String decrementUsageByWhere() { - return "UPDATE group_capacity SET usage = usage - 1, gmt_modified = ? WHERE group_id = ? AND usage > 0"; + default MapperResult decrementUsageByWhere(MapperContext context) { + return new MapperResult( + "UPDATE group_capacity SET usage = usage - 1, gmt_modified = ? WHERE group_id = ? AND usage > 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID))); } /** @@ -119,10 +168,14 @@ default String decrementUsageByWhere() { *

Example: UPDATE group_capacity SET `usage` = (SELECT count(*) FROM config_info), gmt_modified = ? WHERE * group_id = ?; * + * @param context sql paramMap * @return sql. */ - default String updateUsage() { - return "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info), gmt_modified = ? WHERE group_id = ?"; + default MapperResult updateUsage(MapperContext context) { + return new MapperResult( + "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info), gmt_modified = ? WHERE group_id = ?", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID))); } /** @@ -134,12 +187,16 @@ default String updateUsage() { * = * ''), gmt_modified = ? WHERE group_id= ?; * + * @param context sql paramMap * @return sql. */ - default String updateUsageByWhere() { - return "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id = '" - + NamespaceUtil.getNamespaceDefaultId() + "')," - + " gmt_modified = ? WHERE group_id= ?"; + default MapperResult updateUsageByWhere(MapperContext context) { + return new MapperResult( + "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id = '" + + NamespaceUtil.getNamespaceDefaultId() + "')," + " gmt_modified = ? WHERE group_id= ?", + CollectionUtils.list(context.getWhereParameter(FieldConstant.GROUP_ID), + context.getWhereParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.GROUP_ID))); } /** @@ -147,9 +204,10 @@ default String updateUsageByWhere() { * *

Example: SELECT id, group_id FROM group_capacity WHERE id>? LIMIT ?; * + * @param context sql paramMap * @return sql. */ - String selectGroupInfoBySize(); + MapperResult selectGroupInfoBySize(MapperContext context); /** * 获取返回表名. 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 fae8510d608..0aa964cab51 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 @@ -16,7 +16,13 @@ package com.alibaba.nacos.plugin.datasource.mapper; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; + +import java.util.Collections; /** * The history config info mapper. @@ -31,70 +37,87 @@ public interface HistoryConfigInfoMapper extends Mapper { * The default sql: * DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ? * + * @param context sql paramMap * @return The sql of deleting data before startTime. */ - String removeConfigHistory(); + MapperResult removeConfigHistory(MapperContext context); /** * Get the number of configurations before the specified time. * The default sql: * SELECT count(*) FROM his_config_info WHERE gmt_modified < ? * + * @param context sql paramMap * @return The sql of getting the number of configurations before the specified time. */ - default String findConfigHistoryCountByTime() { - return "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"; + default MapperResult findConfigHistoryCountByTime(MapperContext context) { + return new MapperResult("SELECT count(*) FROM his_config_info WHERE gmt_modified < ?", + Collections.singletonList(context.getWhereParameter(FieldConstant.START_TIME))); } /** * Query deleted config. * The default sql: - * SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND gmt_modified >=? AND gmt_modified <= ? + * SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND gmt_modified >=? AND + * gmt_modified <= ? * + * @param context sql paramMap * @return The sql of querying deleted config. */ - default String findDeletedConfig() { - return "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND " - + "gmt_modified >= ? AND gmt_modified <= ?"; + default MapperResult findDeletedConfig(MapperContext context) { + return new MapperResult( + "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND " + + "gmt_modified >= ? AND gmt_modified <= ?", + CollectionUtils.list(context.getWhereParameter(FieldConstant.START_TIME), + context.getWhereParameter(FieldConstant.END_TIME))); } /** * List configuration history change record. * The default sql: - * SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info + * 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 context sql paramMap * @return The sql of listing configuration history change record. */ - default String findConfigHistoryFetchRows() { - 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"; + default MapperResult findConfigHistoryFetchRows(MapperContext context) { + return new MapperResult( + "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", + CollectionUtils.list(context.getWhereParameter(FieldConstant.DATA_ID), + context.getWhereParameter(FieldConstant.GROUP_ID), + context.getWhereParameter(FieldConstant.TENANT_ID))); } - + /** * page search List configuration history. - * SELECT nid,data_id,group_id,tenant_id,app_name,src_ip,src_user,op_type,gmt_create,gmt_modified FROM his_config_info + * 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 limit ?,? * - * @param pageNo pageNo - * @param pageSize pageSize + * @param context pageNo * @return */ - String pageFindConfigHistoryFetchRows(int pageNo, int pageSize); - + MapperResult pageFindConfigHistoryFetchRows(MapperContext context); + /** * Get previous config detail. * The default sql: * 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 = ?) * + * @param context sql paramMap * @return The sql of getting previous config detail. */ - default String detailPreviousConfigHistory() { - return "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 = ?)"; + default MapperResult detailPreviousConfigHistory(MapperContext context) { + return new MapperResult( + "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 = ?)", + Collections.singletonList(context.getWhereParameter(FieldConstant.ID))); } - + /** * 获取返回表名. * diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/TenantCapacityMapper.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/TenantCapacityMapper.java index 6e2d6ce1914..7a8e289741a 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/TenantCapacityMapper.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/mapper/TenantCapacityMapper.java @@ -16,7 +16,14 @@ package com.alibaba.nacos.plugin.datasource.mapper; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; + +import java.util.ArrayList; +import java.util.List; /** * The tenant capacity info mapper. @@ -29,25 +36,36 @@ public interface TenantCapacityMapper extends Mapper { /** * Increment UsageWithDefaultQuotaLimit. * The default sql: - * UPDATE tenant_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE tenant_id = ? AND `usage` < ? AND quota = 0 + * UPDATE tenant_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE tenant_id = ? AND `usage` < ? AND quota + * = 0 * + * @param context sql paramMap * @return The sql of increment UsageWithDefaultQuotaLimit. */ - default String incrementUsageWithDefaultQuotaLimit() { - return "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage <" - + " ? AND quota = 0"; + default MapperResult incrementUsageWithDefaultQuotaLimit(MapperContext context) { + return new MapperResult( + "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage <" + + " ? AND quota = 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.TENANT_ID), + context.getWhereParameter(FieldConstant.USAGE))); } /** * Increment UsageWithQuotaLimit. * The default sql: - * UPDATE tenant_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE tenant_id = ? AND `usage` < quota AND quota != 0 + * UPDATE tenant_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE tenant_id = ? AND `usage` < quota AND + * quota != 0 * + * @param context sql paramMap * @return The sql of Increment UsageWithQuotaLimit. */ - default String incrementUsageWithQuotaLimit() { - return "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage < " - + "quota AND quota != 0"; + default MapperResult incrementUsageWithQuotaLimit(MapperContext context) { + return new MapperResult( + "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage < " + + "quota AND quota != 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.TENANT_ID))); } /** @@ -55,10 +73,13 @@ default String incrementUsageWithQuotaLimit() { * The default sql: * UPDATE tenant_capacity SET `usage` = `usage` + 1, gmt_modified = ? WHERE tenant_id = ? * + * @param context sql paramMap * @return The sql of increment UsageWithQuotaLimit. */ - default String incrementUsage() { - return "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ?"; + default MapperResult incrementUsage(MapperContext context) { + return new MapperResult("UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ?", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.TENANT_ID))); } /** @@ -66,22 +87,32 @@ default String incrementUsage() { * The default sql: * UPDATE tenant_capacity SET `usage` = `usage` - 1, gmt_modified = ? WHERE tenant_id = ? AND `usage` > 0 * + * @param context sql paramMap * @return The sql of decrementUsage. */ - default String decrementUsage() { - return "UPDATE tenant_capacity SET usage = usage - 1, gmt_modified = ? WHERE tenant_id = ? AND usage > 0"; + default MapperResult decrementUsage(MapperContext context) { + return new MapperResult( + "UPDATE tenant_capacity SET usage = usage - 1, gmt_modified = ? WHERE tenant_id = ? AND usage > 0", + CollectionUtils.list(context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.TENANT_ID))); } /** * Correct Usage. * The default sql: - * UPDATE tenant_capacity SET `usage` = (SELECT count(*) FROM config_info WHERE tenant_id = ?), gmt_modified = ? WHERE tenant_id = ? + * UPDATE tenant_capacity SET `usage` = (SELECT count(*) FROM config_info WHERE tenant_id = ?), gmt_modified = ? + * WHERE tenant_id = ? + * ` * @param context sql paramMap` * * @return The sql of correcting Usage. */ - default String correctUsage() { - return "UPDATE tenant_capacity SET usage = (SELECT count(*) FROM config_info WHERE tenant_id = ?), " - + "gmt_modified = ? WHERE tenant_id = ?"; + default MapperResult correctUsage(MapperContext context) { + return new MapperResult( + "UPDATE tenant_capacity SET usage = (SELECT count(*) FROM config_info WHERE tenant_id = ?), " + + "gmt_modified = ? WHERE tenant_id = ?", + CollectionUtils.list(context.getWhereParameter(FieldConstant.TENANT_ID), + context.getUpdateParameter(FieldConstant.GMT_MODIFIED), + context.getWhereParameter(FieldConstant.TENANT_ID))); } /** @@ -89,20 +120,35 @@ default String correctUsage() { * The default sql: * SELECT id, tenant_id FROM tenant_capacity WHERE id>? LIMIT ? * + * @param context sql paramMap * @return The sql of getting TenantCapacity List, only including id and tenantId value. */ - String getCapacityList4CorrectUsage(); + MapperResult getCapacityList4CorrectUsage(MapperContext context); /** * Insert TenantCapacity. * The default sql: * INSERT INTO tenant_capacity (tenant_id, quota, `usage`, `max_size`, max_aggr_count, max_aggr_size, * gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?; + * + * @param context sql paramMap * @return The sql of inserting TenantCapacity. */ - default String insertTenantCapacity() { - return "INSERT INTO tenant_capacity (tenant_id, quota, usage, max_size, max_aggr_count, max_aggr_size, " - + "gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?;"; + default MapperResult insertTenantCapacity(MapperContext context) { + List paramList = new ArrayList<>(); + paramList.add(context.getUpdateParameter(FieldConstant.TENANT_ID)); + paramList.add(context.getUpdateParameter(FieldConstant.QUOTA)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_COUNT)); + paramList.add(context.getUpdateParameter(FieldConstant.MAX_AGGR_SIZE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_CREATE)); + paramList.add(context.getUpdateParameter(FieldConstant.GMT_MODIFIED)); + paramList.add(context.getWhereParameter(FieldConstant.TENANT_ID)); + + return new MapperResult( + "INSERT INTO tenant_capacity (tenant_id, quota, usage, max_size, max_aggr_count, max_aggr_size, " + + "gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?;", + paramList); } /** diff --git a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/model/MapperContext.java b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/model/MapperContext.java index 5e230092025..07706edb110 100644 --- a/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/model/MapperContext.java +++ b/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/model/MapperContext.java @@ -40,6 +40,13 @@ public MapperContext() { this.updateParamMap = new HashMap<>(); } + public MapperContext(int startRow, int pageSize) { + this.whereParamMap = new HashMap<>(); + this.updateParamMap = new HashMap<>(); + this.startRow = startRow; + this.pageSize = pageSize; + } + /** * Returns the value to which the key is mapped, it will return the WHERE parameter in the SQL statement. * @@ -53,7 +60,7 @@ public Object getWhereParameter(String key) { /** * Associates the value with the key in this map, it will contain the WHERE parameter in the SQL statement. * - * @param key Key with which the value is to be associated + * @param key Key with which the value is to be associated * @param value Value to be associated with the specified key */ public void putWhereParameter(String key, Object value) { @@ -73,7 +80,7 @@ public Object getUpdateParameter(String key) { /** * Associates the value with the key in this map, it will contain the UPDATE parameter in the SQL statement. * - * @param key Key with which the value is to be associated + * @param key Key with which the value is to be associated * @param value Value to be associated with the specified key */ public void putUpdateParameter(String key, Object value) { diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java index 52dbec1ce80..6e66fed33fc 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoAggrMapperByDerbyTest.java @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; @@ -45,17 +46,17 @@ public void testBatchRemoveAggr() { String tenantId = "tenant-id"; List argList = CollectionUtils.list(dataId, groupId, tenantId); argList.addAll(datumList); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult result = configInfoAggrMapperByDerby.batchRemoveAggr(context); String sql = result.getSql(); List paramList = result.getParamList(); - + Assert.assertEquals(sql, "DELETE FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? " + "AND datum_id IN (?, ?, ?, ?, ?)"); Assert.assertEquals(paramList, argList); @@ -69,18 +70,18 @@ public void testAggrConfigInfoCount() { String tenantId = "tenant-id"; List argList = CollectionUtils.list(dataId, groupId, tenantId); argList.addAll(datumIds); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult mapperResult = configInfoAggrMapperByDerby.aggrConfigInfoCount(context); String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); - + Assert.assertEquals(sql, "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? " + "AND datum_id IN (?, ?, ?, ?, ?)"); @@ -92,11 +93,11 @@ public void testFindConfigInfoAggrIsOrdered() { String dataId = "data-id"; String groupId = "group-id"; String tenantId = "tenant-id"; - + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult mapperResult = configInfoAggrMapperByDerby.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); @@ -114,13 +115,13 @@ public void testFindConfigInfoAggrByPageFetchRows() { String tenantId = "tenant-id"; Integer startRow = 0; Integer pageSize = 5; - + MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapperByDerby.findConfigInfoAggrByPageFetchRows(context); String sql = mapperResult.getSql(); @@ -133,8 +134,8 @@ public void testFindConfigInfoAggrByPageFetchRows() { @Test public void testFindAllAggrGroupByDistinct() { - String sql = configInfoAggrMapperByDerby.findAllAggrGroupByDistinct(); - Assert.assertEquals(sql, "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"); + MapperResult sql = configInfoAggrMapperByDerby.findAllAggrGroupByDistinct(null); + Assert.assertEquals(sql.getSql(), "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"); } @Test @@ -148,4 +149,4 @@ public void testGetDataSource() { String dataSource = configInfoAggrMapperByDerby.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.DERBY); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java index 618c9b0eb86..2ed3be3c601 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoBetaMapperByDerbyTest.java @@ -17,13 +17,16 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; import java.util.Arrays; import java.util.List; @@ -31,51 +34,96 @@ public class ConfigInfoBetaMapperByDerbyTest { private ConfigInfoBetaMapperByDerby configInfoBetaMapperByDerby; + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoBetaMapperByDerby = new ConfigInfoBetaMapperByDerby(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testUpdateConfigInfo4BetaCas() { - MapperContext context = new MapperContext(); - context.putUpdateParameter("content", "content"); - context.putUpdateParameter("md5", "md5-update"); - context.putUpdateParameter("beta_ips", "beta_ips"); - context.putUpdateParameter("src_ip", "src_ip"); - context.putUpdateParameter("src_user", "src_user"); - context.putUpdateParameter("gmt_modified", "gmt_modified"); - context.putUpdateParameter("app_name", "app_name"); - - context.putWhereParameter("data_id", "data_id"); - context.putWhereParameter("group_id", "group_id"); - context.putWhereParameter("tenant_id", "tenant_id"); - context.putWhereParameter("md5", "md5-where"); - + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + Object betaIps = "2.2.2.2"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.MD5, md5); + MapperResult mapperResult = configInfoBetaMapperByDerby.updateConfigInfo4BetaCas(context); String sql = mapperResult.getSql(); - List paramList = mapperResult.getParamList(); Assert.assertEquals(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 = '')"); - Assert.assertEquals(paramList, Arrays.asList("content", "md5-update", "beta_ips", "src_ip", - "src_user", "gmt_modified", "app_name", "data_id", "group_id", "tenant_id", "md5-where")); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, betaIps, srcIp, srcUser, time, appNameTmp, dataId, group, tenantId, + md5}); } @Test public void testFindAllConfigInfoBetaForDumpAllFetchRows() { - MapperContext context = new MapperContext(); - context.setStartRow(0); - context.setPageSize(5); MapperResult result = configInfoBetaMapperByDerby.findAllConfigInfoBetaForDumpAllFetchRows(context); String sql = result.getSql(); List paramList = result.getParamList(); Assert.assertEquals(sql, "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 OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY ) g, " - + "config_info_beta t WHERE g.id = t.id"); - Assert.assertEquals(paramList, Arrays.asList(0, 5)); + + "( SELECT id FROM config_info_beta ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + + pageSize + " ROWS ONLY ) g, " + "config_info_beta t WHERE g.id = t.id"); + Assert.assertEquals(paramList, Arrays.asList(startRow, pageSize)); } @Test @@ -89,4 +137,4 @@ public void testGetDataSource() { String dataSource = configInfoBetaMapperByDerby.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.DERBY); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java index ca47ef40c81..7ae0c848052 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoMapperByDerbyTest.java @@ -17,203 +17,283 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; public class ConfigInfoMapperByDerbyTest { private ConfigInfoMapperByDerby configInfoMapperByDerby; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String groupId = "groupId"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoMapperByDerby = new ConfigInfoMapperByDerby(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testFindConfigMaxId() { - String sql = configInfoMapperByDerby.findConfigMaxId(); - Assert.assertEquals(sql, "SELECT MAX(id) FROM config_info"); + MapperResult mapperResult = configInfoMapperByDerby.findConfigMaxId(null); + Assert.assertEquals(mapperResult.getSql(), "SELECT MAX(id) FROM config_info"); } @Test public void testFindAllDataIdAndGroup() { - String sql = configInfoMapperByDerby.findAllDataIdAndGroup(); - Assert.assertEquals(sql, "SELECT DISTINCT data_id, group_id FROM config_info"); + MapperResult mapperResult = configInfoMapperByDerby.findAllDataIdAndGroup(null); + Assert.assertEquals(mapperResult.getSql(), "SELECT DISTINCT data_id, group_id FROM config_info"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfoByAppCountRows() { - String sql = configInfoMapperByDerby.findConfigInfoByAppCountRows(); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoByAppCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoByAppFetchRows() { - String sql = configInfoMapperByDerby.findConfigInfoByAppFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoByAppFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT ID,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE" - + " ? AND app_name = ? OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + " ? AND app_name = ? OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testConfigInfoLikeTenantCount() { - String sql = configInfoMapperByDerby.configInfoLikeTenantCount(); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"); + MapperResult mapperResult = configInfoMapperByDerby.configInfoLikeTenantCount(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); } @Test public void testGetTenantIdList() { - String sql = configInfoMapperByDerby.getTenantIdList(0, 5); - Assert.assertEquals(sql, - "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + MapperResult mapperResult = configInfoMapperByDerby.getTenantIdList(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT tenant_id FROM config_info WHERE tenant_id != '' GROUP BY tenant_id OFFSET " + startRow + + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testGetGroupIdList() { - String sql = configInfoMapperByDerby.getGroupIdList(0, 5); - Assert.assertEquals(sql, - "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + MapperResult mapperResult = configInfoMapperByDerby.getGroupIdList(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id OFFSET " + startRow + + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindAllConfigKey() { - String sql = configInfoMapperByDerby.findAllConfigKey(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findAllConfigKey(context); + Assert.assertEquals(mapperResult.getSql(), " SELECT data_id,group_id,app_name FROM ( SELECT id FROM config_info WHERE tenant_id LIKE" - + " ? ORDER BY id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY ) g, config_info t WHERE g.id = t.id "); + + " ? ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + " ROWS ONLY ) g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); } @Test public void testFindAllConfigInfoBaseFetchRows() { - String sql = configInfoMapperByDerby.findAllConfigInfoBaseFetchRows(0, 5); - Assert.assertEquals(sql, "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY " - + "id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY ) g, config_info t WHERE g.id = t.id "); + MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfoBaseFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT t.id,data_id,group_id,content,md5 FROM ( SELECT id FROM config_info ORDER BY " + "id OFFSET " + + startRow + " ROWS FETCH NEXT " + pageSize + + " ROWS ONLY ) g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindAllConfigInfoFragment() { - String sql = configInfoMapperByDerby.findAllConfigInfoFragment(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfoFragment(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type FROM config_info " - + "WHERE id > ? ORDER BY id ASC OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "WHERE id > ? ORDER BY id ASC OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); } @Test public void testFindChangeConfig() { - String sql = configInfoMapperByDerby.findChangeConfig(); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findChangeConfig(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified, encrypted_data_key FROM config_info " + "WHERE gmt_modified >= ? AND gmt_modified <= ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, endTime}); } @Test public void testFindChangeConfigCountRows() { - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - String sql = configInfoMapperByDerby.findChangeConfigCountRows(new HashMap<>(), timestamp, timestamp); - Assert.assertEquals(sql, - "SELECT count(*) FROM config_info WHERE 1=1 AND gmt_modified >=? AND gmt_modified <=? "); + + MapperResult mapperResult = configInfoMapperByDerby.findChangeConfigCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE 1=1 AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {appName, startTime, endTime}); } @Test public void testFindChangeConfigFetchRows() { - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - String sql = configInfoMapperByDerby.findChangeConfigFetchRows(new HashMap<>(), timestamp, timestamp, 0, 5, - 100); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findChangeConfigFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info " - + "WHERE 1=1 AND gmt_modified >=? AND gmt_modified <=? OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "WHERE 1=1 AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? OFFSET " + + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {appName, startTime, endTime}); } @Test public void testListGroupKeyMd5ByPageFetchRows() { - String sql = configInfoMapperByDerby.listGroupKeyMd5ByPageFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.listGroupKeyMd5ByPageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), " SELECT t.id,data_id,group_id,tenant_id,app_name,type,md5,gmt_modified FROM ( SELECT id FROM config_info " - + "ORDER BY id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY ) g, config_info t WHERE g.id = t.id"); + + "ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + + " ROWS ONLY ) g, config_info t WHERE g.id = t.id"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + } @Test public void testFindAllConfigInfo4Export() { - String sql = configInfoMapperByDerby.findAllConfigInfo4Export(new ArrayList<>(), new HashMap<>()); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfo4Export(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user," + + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); + + context.putWhereParameter(FieldConstant.IDS, null); + mapperResult = configInfoMapperByDerby.findAllConfigInfo4Export(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user," - + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE tenant_id = ? "); + + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE tenant_id = ? AND app_name= ? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); + } @Test public void testFindConfigInfoBaseLikeCountRows() { - String sql = configInfoMapperByDerby.findConfigInfoBaseLikeCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE 1=1 AND tenant_id='' "); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoBaseLikeCountRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info WHERE 1=1 AND tenant_id='' "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfoBaseLikeFetchRows() { - String sql = configInfoMapperByDerby.findConfigInfoBaseLikeFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoBaseLikeFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' " - + "OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfo4PageCountRows() { - String sql = configInfoMapperByDerby.findConfigInfo4PageCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id=? "); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfo4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id=? AND app_name=? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfo4PageFetchRows() { - String sql = configInfoMapperByDerby.findConfigInfo4PageFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, - "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info WHERE tenant_id=? " - + "OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfo4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,tenant_id,app_name,content,type FROM config_info WHERE tenant_id=? AND app_name=? " + + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoBaseByGroupFetchRows() { - String sql = configInfoMapperByDerby.findConfigInfoBaseByGroupFetchRows(0, 5); - Assert.assertEquals(sql, "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? " - + "OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoBaseByGroupFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? " + "OFFSET " + + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId}); } @Test public void testFindConfigInfoLike4PageCountRows() { - String sql = configInfoMapperByDerby.findConfigInfoLike4PageCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoLike4PageFetchRows() { - String sql = configInfoMapperByDerby.findConfigInfoLike4PageFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfoLike4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info " - + "WHERE tenant_id LIKE ? OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + + "WHERE tenant_id LIKE ? AND app_name = ? OFFSET " + startRow + + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindAllConfigInfoFetchRows() { - String sql = configInfoMapperByDerby.findAllConfigInfoFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findAllConfigInfoFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), " 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 OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ) g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, startRow, pageSize}); } @Test public void testFindConfigInfosByIds() { - String sql = configInfoMapperByDerby.findConfigInfosByIds(5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByDerby.findConfigInfosByIds(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); } @Test public void testRemoveConfigInfoByIdsAtomic() { - String sql = configInfoMapperByDerby.removeConfigInfoByIdsAtomic(5); - Assert.assertEquals(sql, "DELETE FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + MapperResult mapperResult = configInfoMapperByDerby.removeConfigInfoByIdsAtomic(context); + Assert.assertEquals(mapperResult.getSql(), "DELETE FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); } @Test @@ -230,9 +310,45 @@ public void testGetDataSource() { @Test public void testUpdateConfigInfoAtomicCas() { - String sql = configInfoMapperByDerby.updateConfigInfoAtomicCas(); - Assert.assertEquals(sql, "UPDATE config_info SET " + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.MD5, md5); + + MapperResult mapperResult = configInfoMapperByDerby.updateConfigInfoAtomicCas(context); + Assert.assertEquals(mapperResult.getSql(), "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='')"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, + dataId, group, tenantId, md5}); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java index 5917c87d7fc..0c552144a5a 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagMapperByDerbyTest.java @@ -17,36 +17,112 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; +import java.util.List; + public class ConfigInfoTagMapperByDerbyTest { private ConfigInfoTagMapperByDerby configInfoTagMapperByDerby; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoTagMapperByDerby = new ConfigInfoTagMapperByDerby(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testUpdateConfigInfo4TagCas() { - String sql = configInfoTagMapperByDerby.updateConfigInfo4TagCas(); - Assert.assertEquals(sql, + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + Object tagId = "tagId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.TAG_ID, tagId); + context.putWhereParameter(FieldConstant.MD5, md5); + + MapperResult mapperResult = configInfoTagMapperByDerby.updateConfigInfo4TagCas(context); + + Assert.assertEquals(mapperResult.getSql(), "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 = '')"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, srcIp, srcUser, time, appNameTmp, dataId, group, tenantId, tagId, + md5}); } @Test public void testFindAllConfigInfoTagForDumpAllFetchRows() { - String sql = configInfoTagMapperByDerby.findAllConfigInfoTagForDumpAllFetchRows(0, 100); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoTagMapperByDerby.findAllConfigInfoTagForDumpAllFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY ) g, " - + "config_info_tag t WHERE g.id = t.id"); + + "( SELECT id FROM config_info_tag ORDER BY id OFFSET " + startRow + " ROWS FETCH NEXT " + + pageSize + " ROWS ONLY ) g, " + "config_info_tag t WHERE g.id = t.id"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test @@ -60,4 +136,4 @@ public void testGetDataSource() { String dataSource = configInfoTagMapperByDerby.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.DERBY); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java index 26eb487d806..6dbe42121eb 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/ConfigInfoTagsRelationMapperByDerbyTest.java @@ -16,54 +16,85 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import java.util.HashMap; +import java.util.Arrays; +import java.util.List; public class ConfigInfoTagsRelationMapperByDerbyTest { private ConfigInfoTagsRelationMapperByDerby configInfoTagsRelationMapperByDerby; + int startRow = 0; + + int pageSize = 5; + + String tenantId = "tenantId"; + + String[] tagArr = new String[] {"tag1", "tag3", "tag2", "tag4", "tag5"}; + + MapperContext context; + @Before public void setUp() throws Exception { this.configInfoTagsRelationMapperByDerby = new ConfigInfoTagsRelationMapperByDerby(); + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); } @Test public void testFindConfigInfo4PageCountRows() { - String sql = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageCountRows(new HashMap<>(), 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE " + "a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void testFindConfigInfo4PageFetchRows() { - String sql = configInfoTagsRelationMapperByDerby.findConfigInfo4PageFetchRows(new HashMap<>(), 5, 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoTagsRelationMapperByDerby.findConfigInfo4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? AND b.tag_name IN (?, ?, ?, ?, ?) " + "OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void testFindConfigInfoLike4PageCountRows() { - String sql = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageCountRows(new HashMap<>(), 5); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id " - + "WHERE a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + MapperResult mapperResult = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id " + + "WHERE a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void tsetFindConfigInfoLike4PageFetchRows() { - String sql = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageFetchRows(new HashMap<>(), 5, 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoTagsRelationMapperByDerby.findConfigInfoLike4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 LIKE ? AND b.tag_name " + "IN (?, ?, ?, ?, ?) OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY"); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test @@ -77,4 +108,4 @@ public void testGetDataSource() { String dataSource = configInfoTagsRelationMapperByDerby.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.DERBY); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerbyTest.java index 8ff49674ec3..6e749b01948 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/GroupCapacityMapperByDerbyTest.java @@ -17,18 +17,42 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class GroupCapacityMapperByDerbyTest { private GroupCapacityMapperByDerby groupCapacityMapperByDerby; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + Object groupId = "group"; + + Object createTime = new Timestamp(System.currentTimeMillis()); + + Object modified = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { this.groupCapacityMapperByDerby = new GroupCapacityMapperByDerby(); + context = new MapperContext(startRow, pageSize); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + context.putWhereParameter(FieldConstant.GMT_MODIFIED, modified); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); } @Test @@ -45,67 +69,117 @@ public void testGetDataSource() { @Test public void testInsertIntoSelect() { - String sql = groupCapacityMapperByDerby.insertIntoSelect(); - Assert.assertEquals(sql, + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + MapperResult mapperResult = groupCapacityMapperByDerby.insertIntoSelect(context); + Assert.assertEquals(mapperResult.getSql(), "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size,gmt_create," + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {group, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified}); } @Test public void testInsertIntoSelectByWhere() { - String sql = groupCapacityMapperByDerby.insertIntoSelectByWhere(); - Assert.assertEquals(sql, - "INSERT INTO group_capacity (group_id, quota,usage, max_size, max_aggr_count, max_aggr_size, gmt_create," + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + Object createTime = new Timestamp(System.currentTimeMillis()); + Object modified = new Timestamp(System.currentTimeMillis()); + + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + MapperResult mapperResult = groupCapacityMapperByDerby.insertIntoSelectByWhere(context); + Assert.assertEquals(mapperResult.getSql(), + "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size, gmt_create," + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE group_id=? AND tenant_id = ''"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {group, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified, group}); } @Test public void testIncrementUsageByWhereQuotaEqualZero() { - String sql = groupCapacityMapperByDerby.incrementUsageByWhereQuotaEqualZero(); - Assert.assertEquals(sql, + Object usage = 1; + context.putWhereParameter(FieldConstant.USAGE, usage); + MapperResult mapperResult = groupCapacityMapperByDerby.incrementUsageByWhereQuotaEqualZero(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < ? AND quota = 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId, usage}); } @Test public void testIncrementUsageByWhereQuotaNotEqualZero() { - String sql = groupCapacityMapperByDerby.incrementUsageByWhereQuotaNotEqualZero(); - Assert.assertEquals(sql, + + MapperResult mapperResult = groupCapacityMapperByDerby.incrementUsageByWhereQuotaNotEqualZero(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < quota AND quota != 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testIncrementUsageByWhere() { - String sql = groupCapacityMapperByDerby.incrementUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByDerby.incrementUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testDecrementUsageByWhere() { - String sql = groupCapacityMapperByDerby.decrementUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByDerby.decrementUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage - 1, gmt_modified = ? WHERE group_id = ? AND usage > 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testUpdateUsage() { - String sql = groupCapacityMapperByDerby.updateUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByDerby.updateUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info), gmt_modified = ? WHERE group_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testUpdateUsageByWhere() { - String sql = groupCapacityMapperByDerby.updateUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByDerby.updateUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id = '')," + " gmt_modified = ? WHERE group_id= ?"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, modified, groupId}); } @Test public void testSelectGroupInfoBySize() { - String sql = groupCapacityMapperByDerby.selectGroupInfoBySize(); - Assert.assertEquals(sql, + Object id = 1; + context.putWhereParameter(FieldConstant.ID, id); + MapperResult mapperResult = groupCapacityMapperByDerby.selectGroupInfoBySize(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id, group_id FROM group_capacity WHERE id > ? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"); + context.putWhereParameter(FieldConstant.GMT_CREATE, createTime); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, pageSize}); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java index 531240f76c1..df3e37ffebb 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/HistoryConfigInfoMapperByDerbyTest.java @@ -17,56 +17,94 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class HistoryConfigInfoMapperByDerbyTest { private HistoryConfigInfoMapperByDerby historyConfigInfoMapperByDerby; + int startRow = 0; + + int pageSize = 5; + + int limitSize = 6; + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { historyConfigInfoMapperByDerby = new HistoryConfigInfoMapperByDerby(); + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + } @Test public void testRemoveConfigHistory() { - String sql = historyConfigInfoMapperByDerby.removeConfigHistory(); - Assert.assertEquals(sql, + MapperResult mapperResult = historyConfigInfoMapperByDerby.removeConfigHistory(context); + Assert.assertEquals(mapperResult.getSql(), "DELETE FROM his_config_info WHERE id IN( SELECT id FROM his_config_info WHERE gmt_modified < ? " + "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY)"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, limitSize}); } @Test public void testFindConfigHistoryCountByTime() { - String sql = historyConfigInfoMapperByDerby.findConfigHistoryCountByTime(); - Assert.assertEquals(sql, "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); + MapperResult mapperResult = historyConfigInfoMapperByDerby.findConfigHistoryCountByTime(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime}); } @Test public void testFindDeletedConfig() { - String sql = historyConfigInfoMapperByDerby.findDeletedConfig(); - Assert.assertEquals(sql, + MapperResult mapperResult = historyConfigInfoMapperByDerby.findDeletedConfig(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND " + "gmt_modified >= ? AND gmt_modified <= ?"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, endTime}); } @Test public void testFindConfigHistoryFetchRows() { - String sql = historyConfigInfoMapperByDerby.findConfigHistoryFetchRows(); - Assert.assertEquals(sql, + Object dataId = "dataId"; + Object groupId = "groupId"; + Object tenantId = "tenantId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + MapperResult mapperResult = historyConfigInfoMapperByDerby.findConfigHistoryFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {dataId, groupId, tenantId}); } @Test public void testDetailPreviousConfigHistory() { - String sql = historyConfigInfoMapperByDerby.detailPreviousConfigHistory(); - Assert.assertEquals(sql, + Object id = "1"; + context.putWhereParameter(FieldConstant.ID, id); + MapperResult mapperResult = historyConfigInfoMapperByDerby.detailPreviousConfigHistory(context); + Assert.assertEquals(mapperResult.getSql(), "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 = ?)"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); } @Test @@ -80,4 +118,4 @@ public void testGetDataSource() { String dataSource = historyConfigInfoMapperByDerby.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.DERBY); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerbyTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerbyTest.java index 29cd3f0086d..be04ed044ed 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerbyTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/derby/TenantCapacityMapperByDerbyTest.java @@ -17,18 +17,39 @@ package com.alibaba.nacos.plugin.datasource.impl.derby; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class TenantCapacityMapperByDerbyTest { private TenantCapacityMapperByDerby tenantCapacityMapperByDerby; + String tenantId = "tenantId"; + + MapperContext context; + + private Object modified = new Timestamp(System.currentTimeMillis()); + + private Object oldModified = new Timestamp(System.currentTimeMillis()); + + private Object usage = 1; + @Before public void setUp() throws Exception { tenantCapacityMapperByDerby = new TenantCapacityMapperByDerby(); + context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, oldModified); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.USAGE, usage); + } @Test @@ -45,54 +66,86 @@ public void testGetDataSource() { @Test public void testIncrementUsageWithDefaultQuotaLimit() { - String sql = tenantCapacityMapperByDerby.incrementUsageWithDefaultQuotaLimit(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByDerby.incrementUsageWithDefaultQuotaLimit(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage <" + " ? AND quota = 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId, usage}); } @Test public void testIncrementUsageWithQuotaLimit() { - String sql = tenantCapacityMapperByDerby.incrementUsageWithQuotaLimit(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByDerby.incrementUsageWithQuotaLimit(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage < " + "quota AND quota != 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testIncrementUsage() { - String sql = tenantCapacityMapperByDerby.incrementUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByDerby.incrementUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testDecrementUsage() { - String sql = tenantCapacityMapperByDerby.decrementUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByDerby.decrementUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage - 1, gmt_modified = ? WHERE tenant_id = ? AND usage > 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testCorrectUsage() { - String sql = tenantCapacityMapperByDerby.correctUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByDerby.correctUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = (SELECT count(*) FROM config_info WHERE tenant_id = ?), " + "gmt_modified = ? WHERE tenant_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, modified, tenantId}); + } @Test public void testGetCapacityList4CorrectUsage() { - String sql = tenantCapacityMapperByDerby.getCapacityList4CorrectUsage(); - Assert.assertEquals(sql, + Object id = 1; + Object limit = 10; + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limit); + MapperResult mapperResult = tenantCapacityMapperByDerby.getCapacityList4CorrectUsage(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id, tenant_id FROM tenant_capacity WHERE id>? OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, limit}); } @Test public void testInsertTenantCapacity() { - String sql = tenantCapacityMapperByDerby.insertTenantCapacity(); - Assert.assertEquals(sql, + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + Object createTime = new Timestamp(System.currentTimeMillis()); + + context.putUpdateParameter(FieldConstant.TENANT_ID, tenantId); + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + + MapperResult mapperResult = tenantCapacityMapperByDerby.insertTenantCapacity(context); + Assert.assertEquals(mapperResult.getSql(), "INSERT INTO tenant_capacity (tenant_id, quota, usage, max_size, max_aggr_count, max_aggr_size, " + "gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?;"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {tenantId, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified, tenantId}); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java index 0a8c7683af1..ce27ff774ee 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoAggrMapperByMySqlTest.java @@ -18,6 +18,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; @@ -46,15 +47,15 @@ public void testBatchRemoveAggr() { String dataId = "data-id"; String groupId = "group-id"; String tenantId = "tenant-id"; - + List argList = CollectionUtils.list(dataId, groupId, tenantId); argList.addAll(datumList); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumList); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATUM_ID, datumList); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult mapperResult = configInfoAggrMapperByMySql.batchRemoveAggr(context); String sql = mapperResult.getSql(); @@ -72,20 +73,20 @@ public void testAggrConfigInfoCount() { String dataId = "data-id"; String groupId = "group-id"; String tenantId = "tenant-id"; - + List argList = CollectionUtils.list(dataId, groupId, tenantId); argList.addAll(datumIds); - + MapperContext context = new MapperContext(); - context.putWhereParameter("datum_id", datumIds); - context.putWhereParameter("isIn", true); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATUM_ID, datumIds); + context.putWhereParameter(FieldConstant.IS_IN, true); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult mapperResult = configInfoAggrMapperByMySql.aggrConfigInfoCount(context); String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); - + Assert.assertEquals(sql, "SELECT count(*) FROM config_info_aggr WHERE data_id = ? AND group_id = ? AND tenant_id = ? " + "AND datum_id IN (?, ?, ?, ?, ?)"); @@ -99,14 +100,14 @@ public void testFindConfigInfoAggrIsOrdered() { String tenantId = "tenant-id"; MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); MapperResult mapperResult = configInfoAggrMapperByMySql.findConfigInfoAggrIsOrdered(context); String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); - + Assert.assertEquals(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"); Assert.assertEquals(paramList, Arrays.asList(dataId, groupId, tenantId)); @@ -121,11 +122,11 @@ public void testFindConfigInfoAggrByPageFetchRows() { Integer pageSize = 5; MapperContext context = new MapperContext(); - context.putWhereParameter("data_id", dataId); - context.putWhereParameter("group_id", groupId); - context.putWhereParameter("tenant_id", tenantId); - context.putWhereParameter("startRow", startRow); - context.putWhereParameter("pageSize", pageSize); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.setStartRow(startRow); + context.setPageSize(pageSize); MapperResult mapperResult = configInfoAggrMapperByMySql.findConfigInfoAggrByPageFetchRows(context); String sql = mapperResult.getSql(); @@ -139,8 +140,9 @@ public void testFindConfigInfoAggrByPageFetchRows() { @Test public void testFindAllAggrGroupByDistinct() { - String sql = configInfoAggrMapperByMySql.findAllAggrGroupByDistinct(); - Assert.assertEquals(sql, "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"); + MapperResult mapperResult = configInfoAggrMapperByMySql.findAllAggrGroupByDistinct(null); + Assert.assertEquals(mapperResult.getSql(), + "SELECT DISTINCT data_id, group_id, tenant_id FROM config_info_aggr"); } @Test @@ -154,4 +156,4 @@ public void testGetDataSource() { String dataSource = configInfoAggrMapperByMySql.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.MYSQL); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java index d643c1aa724..a06c21437c6 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoBetaMapperByMySqlTest.java @@ -17,13 +17,16 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; import com.alibaba.nacos.plugin.datasource.model.MapperContext; import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; import java.util.Arrays; import java.util.List; @@ -31,50 +34,97 @@ public class ConfigInfoBetaMapperByMySqlTest { private ConfigInfoBetaMapperByMySql configInfoBetaMapperByMySql; + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoBetaMapperByMySql = new ConfigInfoBetaMapperByMySql(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testUpdateConfigInfo4BetaCas() { - MapperContext context = new MapperContext(); - context.putUpdateParameter("content", "content"); - context.putUpdateParameter("md5", "md5-update"); - context.putUpdateParameter("beta_ips", "beta_ips"); - context.putUpdateParameter("src_ip", "src_ip"); - context.putUpdateParameter("src_user", "src_user"); - context.putUpdateParameter("gmt_modified", "gmt_modified"); - context.putUpdateParameter("app_name", "app_name"); - - context.putWhereParameter("data_id", "data_id"); - context.putWhereParameter("group_id", "group_id"); - context.putWhereParameter("tenant_id", "tenant_id"); - context.putWhereParameter("md5", "md5-where"); + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + Object betaIps = "2.2.2.2"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.BETA_IPS, betaIps); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.MD5, md5); + MapperResult mapperResult = configInfoBetaMapperByMySql.updateConfigInfo4BetaCas(context); - + String sql = mapperResult.getSql(); List paramList = mapperResult.getParamList(); Assert.assertEquals(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 = '')"); - Assert.assertEquals(paramList, Arrays.asList("content", "md5-update", "beta_ips", "src_ip", - "src_user", "gmt_modified", "app_name", "data_id", "group_id", "tenant_id", "md5-where")); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, betaIps, srcIp, srcUser, time, appNameTmp, dataId, group, tenantId, + md5}); } @Test public void testFindAllConfigInfoBetaForDumpAllFetchRows() { - MapperContext context = new MapperContext(); - context.setStartRow(0); - context.setPageSize(5); MapperResult result = configInfoBetaMapperByMySql.findAllConfigInfoBetaForDumpAllFetchRows(context); String sql = result.getSql(); List paramList = result.getParamList(); Assert.assertEquals(sql, " 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 " + 0 + "," + 5 + " )" - + " g, config_info_beta t WHERE g.id = t.id "); - Assert.assertEquals(paramList, Arrays.asList(0, 5)); + + " FROM ( SELECT id FROM config_info_beta ORDER BY id LIMIT " + startRow + "," + pageSize + + " )" + " g, config_info_beta t WHERE g.id = t.id "); + Assert.assertEquals(paramList, Arrays.asList(startRow, pageSize)); } @Test @@ -88,4 +138,4 @@ public void testGetDataSource() { String dataSource = configInfoBetaMapperByMySql.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.MYSQL); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java index 72e6a64bd25..2793b6cc76a 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoMapperByMySqlTest.java @@ -18,202 +18,279 @@ import com.alibaba.nacos.common.utils.NamespaceUtil; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; public class ConfigInfoMapperByMySqlTest { private ConfigInfoMapperByMySql configInfoMapperByMySql; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String groupId = "groupId"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoMapperByMySql = new ConfigInfoMapperByMySql(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testFindConfigMaxId() { - String sql = configInfoMapperByMySql.findConfigMaxId(); - Assert.assertEquals(sql, "SELECT MAX(id) FROM config_info"); + MapperResult mapperResult = configInfoMapperByMySql.findConfigMaxId(null); + Assert.assertEquals(mapperResult.getSql(), "SELECT MAX(id) FROM config_info"); } @Test public void testFindAllDataIdAndGroup() { - String sql = configInfoMapperByMySql.findAllDataIdAndGroup(); - Assert.assertEquals(sql, "SELECT DISTINCT data_id, group_id FROM config_info"); + MapperResult mapperResult = configInfoMapperByMySql.findAllDataIdAndGroup(null); + Assert.assertEquals(mapperResult.getSql(), "SELECT DISTINCT data_id, group_id FROM config_info"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfoByAppCountRows() { - String sql = configInfoMapperByMySql.findConfigInfoByAppCountRows(); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoByAppCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoByAppFetchRows() { - String sql = configInfoMapperByMySql.findConfigInfoByAppFetchRows(0, 5); - Assert.assertEquals(sql, - "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name= ? LIMIT 0,5"); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoByAppFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE tenant_id LIKE ? AND app_name= ? LIMIT " + + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testConfigInfoLikeTenantCount() { - String sql = configInfoMapperByMySql.configInfoLikeTenantCount(); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"); + MapperResult mapperResult = configInfoMapperByMySql.configInfoLikeTenantCount(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info WHERE tenant_id LIKE ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); } @Test public void testGetTenantIdList() { - String sql = configInfoMapperByMySql.getTenantIdList(0, 5); - Assert.assertEquals(sql, - "SELECT tenant_id FROM config_info WHERE tenant_id != '" - + NamespaceUtil.getNamespaceDefaultId() + "' GROUP BY tenant_id LIMIT 0,5"); + MapperResult mapperResult = configInfoMapperByMySql.getTenantIdList(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT tenant_id FROM config_info WHERE tenant_id != '" + NamespaceUtil.getNamespaceDefaultId() + + "' GROUP BY tenant_id LIMIT " + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testGetGroupIdList() { - String sql = configInfoMapperByMySql.getGroupIdList(0, 5); - Assert.assertEquals(sql, "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT 0,5"); + MapperResult mapperResult = configInfoMapperByMySql.getGroupIdList(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT group_id FROM config_info WHERE tenant_id ='' GROUP BY group_id LIMIT " + startRow + "," + + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindAllConfigKey() { - String sql = configInfoMapperByMySql.findAllConfigKey(0, 5); - Assert.assertEquals(sql, " SELECT data_id,group_id,app_name FROM ( " - + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT 0,5 )" - + " g, config_info t WHERE g.id = t.id "); + MapperResult mapperResult = configInfoMapperByMySql.findAllConfigKey(context); + Assert.assertEquals(mapperResult.getSql(), " SELECT data_id,group_id,app_name FROM ( " + + " SELECT id FROM config_info WHERE tenant_id LIKE ? ORDER BY id LIMIT " + context.getStartRow() + "," + + context.getPageSize() + " )" + " g, config_info t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId}); } @Test public void testFindAllConfigInfoBaseFetchRows() { - String sql = configInfoMapperByMySql.findAllConfigInfoBaseFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfoBaseFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindAllConfigInfoFragment() { - String sql = configInfoMapperByMySql.findAllConfigInfoFragment(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfoFragment(context); + Assert.assertEquals(mapperResult.getSql(), "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 0,5"); + + "FROM config_info WHERE id > ? ORDER BY id ASC LIMIT " + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); } @Test public void testFindChangeConfig() { - String sql = configInfoMapperByMySql.findChangeConfig(); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findChangeConfig(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT data_id, group_id, tenant_id, app_name, content, gmt_modified, encrypted_data_key " + "FROM config_info WHERE gmt_modified >= ? AND gmt_modified <= ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, endTime}); } @Test public void testFindChangeConfigCountRows() { - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - String sql = configInfoMapperByMySql.findChangeConfigCountRows(new HashMap<>(), timestamp, timestamp); - Assert.assertEquals(sql, - "SELECT count(*) FROM config_info WHERE 1=1 AND gmt_modified >=? AND gmt_modified <=? "); + + MapperResult mapperResult = configInfoMapperByMySql.findChangeConfigCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE 1=1 AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {appName, startTime, endTime}); } @Test public void testFindChangeConfigFetchRows() { - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); - String sql = configInfoMapperByMySql.findChangeConfigFetchRows(new HashMap<>(), timestamp, timestamp, 0, 5, - 100); - Assert.assertEquals(sql, + Object lastMaxId = 100; + context.putWhereParameter(FieldConstant.LAST_MAX_ID, lastMaxId); + MapperResult mapperResult = configInfoMapperByMySql.findChangeConfigFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_modified FROM config_info " - + "WHERE 1=1 AND gmt_modified >=? AND gmt_modified <=? AND id > 100 ORDER BY id ASC LIMIT 0,5"); + + "WHERE 1=1 AND tenant_id = ? AND app_name = ? AND gmt_modified >=? AND gmt_modified <=? AND id > " + + lastMaxId + " ORDER BY id ASC LIMIT " + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {tenantId, appName, startTime, endTime}); } @Test public void testListGroupKeyMd5ByPageFetchRows() { - String sql = configInfoMapperByMySql.listGroupKeyMd5ByPageFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.listGroupKeyMd5ByPageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 0,5 ) g, config_info t WHERE g.id = t.id"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); + } @Test public void testFindAllConfigInfo4Export() { - String sql = configInfoMapperByMySql.findAllConfigInfo4Export(new ArrayList<>(), new HashMap<>()); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfo4Export(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user," + + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); + + context.putWhereParameter(FieldConstant.IDS, null); + mapperResult = configInfoMapperByMySql.findAllConfigInfo4Export(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,md5,gmt_create,gmt_modified,src_user," - + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE tenant_id = ? "); + + "src_ip,c_desc,c_use,effect,c_schema,encrypted_data_key FROM config_info WHERE tenant_id = ? AND app_name= ? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoBaseLikeCountRows() { - String sql = configInfoMapperByMySql.findConfigInfoBaseLikeCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE 1=1 AND tenant_id='' "); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoBaseLikeCountRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info WHERE 1=1 AND tenant_id='' "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfoBaseLikeFetchRows() { - String sql = configInfoMapperByMySql.findConfigInfoBaseLikeFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, - "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' LIMIT 0,5"); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoBaseLikeFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,tenant_id,content FROM config_info WHERE 1=1 AND tenant_id='' LIMIT " + + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test public void testFindConfigInfo4PageCountRows() { - String sql = configInfoMapperByMySql.findConfigInfo4PageCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id=? "); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfo4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id=? AND app_name=? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfo4PageFetchRows() { - String sql = configInfoMapperByMySql.findConfigInfo4PageFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfo4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,type,encrypted_data_key FROM config_info" - + " WHERE tenant_id=? LIMIT 0,5"); + + " WHERE tenant_id=? AND app_name=? LIMIT " + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoBaseByGroupFetchRows() { - String sql = configInfoMapperByMySql.findConfigInfoBaseByGroupFetchRows(0, 5); - Assert.assertEquals(sql, - "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? LIMIT 0,5"); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoBaseByGroupFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT id,data_id,group_id,content FROM config_info WHERE group_id=? AND tenant_id=? LIMIT " + startRow + + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, tenantId}); } @Test public void testFindConfigInfoLike4PageCountRows() { - String sql = configInfoMapperByMySql.findConfigInfoLike4PageCountRows(new HashMap<>()); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? "); + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info WHERE tenant_id LIKE ? AND app_name = ? "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindConfigInfoLike4PageFetchRows() { - String sql = configInfoMapperByMySql.findConfigInfoLike4PageFetchRows(new HashMap<>(), 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfoLike4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,encrypted_data_key FROM config_info " - + "WHERE tenant_id LIKE ? LIMIT 0,5"); + + "WHERE tenant_id LIKE ? AND app_name = ? LIMIT " + startRow + "," + pageSize); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, appName}); } @Test public void testFindAllConfigInfoFetchRows() { - String sql = configInfoMapperByMySql.findAllConfigInfoFetchRows(0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findAllConfigInfoFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, startRow, pageSize}); } @Test public void testFindConfigInfosByIds() { - String sql = configInfoMapperByMySql.findConfigInfosByIds(5); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoMapperByMySql.findConfigInfosByIds(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id,data_id,group_id,tenant_id,app_name,content,md5 FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); } @Test public void testRemoveConfigInfoByIdsAtomic() { - String sql = configInfoMapperByMySql.removeConfigInfoByIdsAtomic(5); - Assert.assertEquals(sql, "DELETE FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + MapperResult mapperResult = configInfoMapperByMySql.removeConfigInfoByIdsAtomic(context); + Assert.assertEquals(mapperResult.getSql(), "DELETE FROM config_info WHERE id IN (?, ?, ?, ?, ?) "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), ids.toArray()); } @Test @@ -230,9 +307,45 @@ public void testGetDataSource() { @Test public void testUpdateConfigInfoAtomicCas() { - String sql = configInfoMapperByMySql.updateConfigInfoAtomicCas(); - Assert.assertEquals(sql, "UPDATE config_info SET " + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.MD5, md5); + + MapperResult mapperResult = configInfoMapperByMySql.updateConfigInfoAtomicCas(context); + Assert.assertEquals(mapperResult.getSql(), "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='')"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, srcIp, srcUser, time, appNameTmp, desc, use, effect, type, schema, + dataId, group, tenantId, md5}); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java index 45b7ee5a6ed..7632785b5d4 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigInfoTagMapperByMySqlTest.java @@ -17,35 +17,112 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; +import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; +import java.util.List; + public class ConfigInfoTagMapperByMySqlTest { private ConfigInfoTagMapperByMySql configInfoTagMapperByMySql; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + String appName = "appName"; + + String tenantId = "tenantId"; + + String id = "123"; + + List ids = Lists.newArrayList(1L, 2L, 3L, 5L, 144L); + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { configInfoTagMapperByMySql = new ConfigInfoTagMapperByMySql(); + + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.APP_NAME, appName); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.IDS, ids); + } @Test public void testUpdateConfigInfo4TagCas() { - String sql = configInfoTagMapperByMySql.updateConfigInfo4TagCas(); - Assert.assertEquals(sql, + String newContent = "new Content"; + String newMD5 = "newMD5"; + String srcIp = "1.1.1.1"; + Object srcUser = "nacos"; + Object time = new Timestamp(System.currentTimeMillis()); + Object appNameTmp = "newAppName"; + Object desc = "description"; + Object use = "use"; + Object effect = "effect"; + Object type = "type"; + Object schema = "schema"; + + context.putUpdateParameter(FieldConstant.CONTENT, newContent); + context.putUpdateParameter(FieldConstant.MD5, newMD5); + context.putUpdateParameter(FieldConstant.SRC_IP, srcIp); + context.putUpdateParameter(FieldConstant.SRC_USER, srcUser); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, time); + context.putUpdateParameter(FieldConstant.APP_NAME, appNameTmp); + context.putUpdateParameter(FieldConstant.C_DESC, desc); + context.putUpdateParameter(FieldConstant.C_USE, use); + context.putUpdateParameter(FieldConstant.EFFECT, effect); + context.putUpdateParameter(FieldConstant.TYPE, type); + context.putUpdateParameter(FieldConstant.C_SCHEMA, schema); + + Object dataId = "dataId"; + Object group = "group"; + Object md5 = "md5"; + Object tagId = "tagId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, group); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.TAG_ID, tagId); + context.putWhereParameter(FieldConstant.MD5, md5); + + MapperResult mapperResult = configInfoTagMapperByMySql.updateConfigInfo4TagCas(context); + + Assert.assertEquals(mapperResult.getSql(), "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 = '')"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {newContent, newMD5, srcIp, srcUser, time, appNameTmp, dataId, group, tenantId, tagId, + md5}); } @Test public void testFindAllConfigInfoTagForDumpAllFetchRows() { - String sql = configInfoTagMapperByMySql.findAllConfigInfoTagForDumpAllFetchRows(0, 100); - Assert.assertEquals(sql, + MapperResult mapperResult = configInfoTagMapperByMySql.findAllConfigInfoTagForDumpAllFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), " 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 0,100 ) g, config_info_tag t WHERE g.id = t.id "); + + "SELECT id FROM config_info_tag ORDER BY id LIMIT " + startRow + "," + pageSize + + " ) g, config_info_tag t WHERE g.id = t.id "); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), emptyObjs); } @Test @@ -59,4 +136,4 @@ public void testGetDataSource() { String dataSource = configInfoTagMapperByMySql.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.MYSQL); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java index e1ae73ef277..995eb14f242 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/ConfigTagsRelationMapperByMySqlTest.java @@ -16,52 +16,85 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import java.util.HashMap; +import java.util.Arrays; +import java.util.List; public class ConfigTagsRelationMapperByMySqlTest { private ConfigTagsRelationMapperByMySql configTagsRelationMapperByMySql; + int startRow = 0; + + int pageSize = 5; + + String tenantId = "tenantId"; + + String[] tagArr = new String[] {"tag1", "tag3", "tag2", "tag4", "tag5"}; + + MapperContext context; + @Before public void setUp() throws Exception { configTagsRelationMapperByMySql = new ConfigTagsRelationMapperByMySql(); + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.TAG_ARR, tagArr); } @Test public void testFindConfigInfo4PageCountRows() { - String sql = configTagsRelationMapperByMySql.findConfigInfoLike4PageCountRows(new HashMap<>(), 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configTagsRelationMapperByMySql.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id WHERE " + "a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void testFindConfigInfo4PageFetchRows() { - String sql = configTagsRelationMapperByMySql.findConfigInfo4PageFetchRows(new HashMap<>(), 5, 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configTagsRelationMapperByMySql.findConfigInfo4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT a.id,a.data_id,a.group_id,a.tenant_id,a.app_name,a.content FROM config_info a LEFT JOIN " - + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT 0,5"); + + "config_tags_relation b ON a.id=b.id WHERE a.tenant_id=? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT " + + startRow + "," + pageSize); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void testFindConfigInfoLike4PageCountRows() { - String sql = configTagsRelationMapperByMySql.findConfigInfoLike4PageCountRows(new HashMap<>(), 5); - Assert.assertEquals(sql, "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id " - + "WHERE a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + MapperResult mapperResult = configTagsRelationMapperByMySql.findConfigInfoLike4PageCountRows(context); + Assert.assertEquals(mapperResult.getSql(), + "SELECT count(*) FROM config_info a LEFT JOIN config_tags_relation b ON a.id=b.id " + + "WHERE a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) "); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test public void tsetFindConfigInfoLike4PageFetchRows() { - String sql = configTagsRelationMapperByMySql.findConfigInfoLike4PageFetchRows(new HashMap<>(), 5, 0, 5); - Assert.assertEquals(sql, + MapperResult mapperResult = configTagsRelationMapperByMySql.findConfigInfoLike4PageFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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 LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT 0,5"); + + " config_tags_relation b ON a.id=b.id WHERE a.tenant_id LIKE ? AND b.tag_name IN (?, ?, ?, ?, ?) LIMIT " + + startRow + "," + pageSize); + List list = CollectionUtils.list(tenantId); + list.addAll(Arrays.asList(tagArr)); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), list.toArray()); } @Test @@ -75,4 +108,4 @@ public void testGetDataSource() { String dataSource = configTagsRelationMapperByMySql.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.MYSQL); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysqlTest.java index 8691a6d60ab..8f84bde5325 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/GroupCapacityMapperByMysqlTest.java @@ -17,18 +17,42 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class GroupCapacityMapperByMysqlTest { private GroupCapacityMapperByMysql groupCapacityMapperByMysql; + private final Object[] emptyObjs = new Object[] {}; + + int startRow = 0; + + int pageSize = 5; + + Object groupId = "group"; + + Object createTime = new Timestamp(System.currentTimeMillis()); + + Object modified = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { groupCapacityMapperByMysql = new GroupCapacityMapperByMysql(); + context = new MapperContext(startRow, pageSize); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + context.putWhereParameter(FieldConstant.GMT_MODIFIED, modified); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); } @Test @@ -45,66 +69,115 @@ public void testGetDataSource() { @Test public void testInsertIntoSelect() { - String sql = groupCapacityMapperByMysql.insertIntoSelect(); - Assert.assertEquals(sql, + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + MapperResult mapperResult = groupCapacityMapperByMysql.insertIntoSelect(context); + Assert.assertEquals(mapperResult.getSql(), "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size,gmt_create," + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {group, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified}); } @Test public void testInsertIntoSelectByWhere() { - String sql = groupCapacityMapperByMysql.insertIntoSelectByWhere(); - Assert.assertEquals(sql, - "INSERT INTO group_capacity (group_id, quota,usage, max_size, max_aggr_count, max_aggr_size, gmt_create," + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + Object createTime = new Timestamp(System.currentTimeMillis()); + Object modified = new Timestamp(System.currentTimeMillis()); + + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + MapperResult mapperResult = groupCapacityMapperByMysql.insertIntoSelectByWhere(context); + Assert.assertEquals(mapperResult.getSql(), + "INSERT INTO group_capacity (group_id, quota, usage, max_size, max_aggr_count, max_aggr_size, gmt_create," + " gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE group_id=? AND tenant_id = ''"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {group, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified, group}); } @Test public void testIncrementUsageByWhereQuotaEqualZero() { - String sql = groupCapacityMapperByMysql.incrementUsageByWhereQuotaEqualZero(); - Assert.assertEquals(sql, + Object usage = 1; + context.putWhereParameter(FieldConstant.USAGE, usage); + MapperResult mapperResult = groupCapacityMapperByMysql.incrementUsageByWhereQuotaEqualZero(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < ? AND quota = 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId, usage}); } @Test public void testIncrementUsageByWhereQuotaNotEqualZero() { - String sql = groupCapacityMapperByMysql.incrementUsageByWhereQuotaNotEqualZero(); - Assert.assertEquals(sql, + + MapperResult mapperResult = groupCapacityMapperByMysql.incrementUsageByWhereQuotaNotEqualZero(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ? AND usage < quota AND quota != 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testIncrementUsageByWhere() { - String sql = groupCapacityMapperByMysql.incrementUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByMysql.incrementUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage + 1, gmt_modified = ? WHERE group_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testDecrementUsageByWhere() { - String sql = groupCapacityMapperByMysql.decrementUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByMysql.decrementUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = usage - 1, gmt_modified = ? WHERE group_id = ? AND usage > 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testUpdateUsage() { - String sql = groupCapacityMapperByMysql.updateUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByMysql.updateUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info), gmt_modified = ? WHERE group_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, groupId}); } @Test public void testUpdateUsageByWhere() { - String sql = groupCapacityMapperByMysql.updateUsageByWhere(); - Assert.assertEquals(sql, + MapperResult mapperResult = groupCapacityMapperByMysql.updateUsageByWhere(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE group_capacity SET usage = (SELECT count(*) FROM config_info WHERE group_id=? AND tenant_id = '')," + " gmt_modified = ? WHERE group_id= ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {groupId, modified, groupId}); } @Test public void testSelectGroupInfoBySize() { - String sql = groupCapacityMapperByMysql.selectGroupInfoBySize(); - Assert.assertEquals(sql, "SELECT id, group_id FROM group_capacity WHERE id > ? LIMIT ?"); + Object id = 1; + context.putWhereParameter(FieldConstant.ID, id); + MapperResult mapperResult = groupCapacityMapperByMysql.selectGroupInfoBySize(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id, group_id FROM group_capacity WHERE id > ? LIMIT ?"); + context.putWhereParameter(FieldConstant.GMT_CREATE, createTime); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, pageSize}); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java index cd82b4936a6..f0222ec8acb 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/HistoryConfigInfoMapperByMySqlTest.java @@ -17,54 +17,92 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class HistoryConfigInfoMapperByMySqlTest { private HistoryConfigInfoMapperByMySql historyConfigInfoMapperByMySql; + int startRow = 0; + + int pageSize = 5; + + int limitSize = 6; + + Timestamp startTime = new Timestamp(System.currentTimeMillis()); + + Timestamp endTime = new Timestamp(System.currentTimeMillis()); + + MapperContext context; + @Before public void setUp() throws Exception { historyConfigInfoMapperByMySql = new HistoryConfigInfoMapperByMySql(); + context = new MapperContext(startRow, pageSize); + context.putWhereParameter(FieldConstant.START_TIME, startTime); + context.putWhereParameter(FieldConstant.END_TIME, endTime); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limitSize); + } @Test public void testRemoveConfigHistory() { - String sql = historyConfigInfoMapperByMySql.removeConfigHistory(); - Assert.assertEquals(sql, "DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ?"); + MapperResult mapperResult = historyConfigInfoMapperByMySql.removeConfigHistory(context); + Assert.assertEquals(mapperResult.getSql(), "DELETE FROM his_config_info WHERE gmt_modified < ? LIMIT ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, limitSize}); } @Test public void testFindConfigHistoryCountByTime() { - String sql = historyConfigInfoMapperByMySql.findConfigHistoryCountByTime(); - Assert.assertEquals(sql, "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); + MapperResult mapperResult = historyConfigInfoMapperByMySql.findConfigHistoryCountByTime(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT count(*) FROM his_config_info WHERE gmt_modified < ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime}); } @Test public void testFindDeletedConfig() { - String sql = historyConfigInfoMapperByMySql.findDeletedConfig(); - Assert.assertEquals(sql, + MapperResult mapperResult = historyConfigInfoMapperByMySql.findDeletedConfig(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT DISTINCT data_id, group_id, tenant_id FROM his_config_info WHERE op_type = 'D' AND " + "gmt_modified >= ? AND gmt_modified <= ?"); + + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {startTime, endTime}); } @Test public void testFindConfigHistoryFetchRows() { - String sql = historyConfigInfoMapperByMySql.findConfigHistoryFetchRows(); - Assert.assertEquals(sql, + Object dataId = "dataId"; + Object groupId = "groupId"; + Object tenantId = "tenantId"; + + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + context.putWhereParameter(FieldConstant.GROUP_ID, groupId); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.DATA_ID, dataId); + MapperResult mapperResult = historyConfigInfoMapperByMySql.findConfigHistoryFetchRows(context); + Assert.assertEquals(mapperResult.getSql(), "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"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {dataId, groupId, tenantId}); } @Test public void testDetailPreviousConfigHistory() { - String sql = historyConfigInfoMapperByMySql.detailPreviousConfigHistory(); - Assert.assertEquals(sql, + Object id = "1"; + context.putWhereParameter(FieldConstant.ID, id); + MapperResult mapperResult = historyConfigInfoMapperByMySql.detailPreviousConfigHistory(context); + Assert.assertEquals(mapperResult.getSql(), "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 = ?)"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id}); } @Test @@ -78,4 +116,4 @@ public void testGetDataSource() { String dataSource = historyConfigInfoMapperByMySql.getDataSource(); Assert.assertEquals(dataSource, DataSourceConstant.MYSQL); } -} \ No newline at end of file +} diff --git a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySqlTest.java b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySqlTest.java index 78f9307033e..7f41e483e29 100644 --- a/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySqlTest.java +++ b/plugin/datasource/src/test/java/com/alibaba/nacos/plugin/datasource/impl/mysql/TenantCapacityMapperByMySqlTest.java @@ -17,18 +17,39 @@ package com.alibaba.nacos.plugin.datasource.impl.mysql; import com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant; +import com.alibaba.nacos.plugin.datasource.constants.FieldConstant; import com.alibaba.nacos.plugin.datasource.constants.TableConstant; +import com.alibaba.nacos.plugin.datasource.model.MapperContext; +import com.alibaba.nacos.plugin.datasource.model.MapperResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.sql.Timestamp; + public class TenantCapacityMapperByMySqlTest { private TenantCapacityMapperByMySql tenantCapacityMapperByMySql; + String tenantId = "tenantId"; + + MapperContext context; + + private Object modified = new Timestamp(System.currentTimeMillis()); + + private Object oldModified = new Timestamp(System.currentTimeMillis()); + + private Object usage = 1; + @Before public void setUp() throws Exception { tenantCapacityMapperByMySql = new TenantCapacityMapperByMySql(); + context = new MapperContext(); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + context.putWhereParameter(FieldConstant.GMT_MODIFIED, oldModified); + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + context.putWhereParameter(FieldConstant.USAGE, usage); + } @Test @@ -45,53 +66,85 @@ public void testGetDataSource() { @Test public void testIncrementUsageWithDefaultQuotaLimit() { - String sql = tenantCapacityMapperByMySql.incrementUsageWithDefaultQuotaLimit(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByMySql.incrementUsageWithDefaultQuotaLimit(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage <" + " ? AND quota = 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId, usage}); } @Test public void testIncrementUsageWithQuotaLimit() { - String sql = tenantCapacityMapperByMySql.incrementUsageWithQuotaLimit(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByMySql.incrementUsageWithQuotaLimit(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ? AND usage < " + "quota AND quota != 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testIncrementUsage() { - String sql = tenantCapacityMapperByMySql.incrementUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByMySql.incrementUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage + 1, gmt_modified = ? WHERE tenant_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testDecrementUsage() { - String sql = tenantCapacityMapperByMySql.decrementUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByMySql.decrementUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = usage - 1, gmt_modified = ? WHERE tenant_id = ? AND usage > 0"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {modified, tenantId}); } @Test public void testCorrectUsage() { - String sql = tenantCapacityMapperByMySql.correctUsage(); - Assert.assertEquals(sql, + MapperResult mapperResult = tenantCapacityMapperByMySql.correctUsage(context); + Assert.assertEquals(mapperResult.getSql(), "UPDATE tenant_capacity SET usage = (SELECT count(*) FROM config_info WHERE tenant_id = ?), " + "gmt_modified = ? WHERE tenant_id = ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {tenantId, modified, tenantId}); + } @Test public void testGetCapacityList4CorrectUsage() { - String sql = tenantCapacityMapperByMySql.getCapacityList4CorrectUsage(); - Assert.assertEquals(sql, "SELECT id, tenant_id FROM tenant_capacity WHERE id>? LIMIT ?"); + Object id = 1; + Object limit = 10; + context.putWhereParameter(FieldConstant.ID, id); + context.putWhereParameter(FieldConstant.LIMIT_SIZE, limit); + MapperResult mapperResult = tenantCapacityMapperByMySql.getCapacityList4CorrectUsage(context); + Assert.assertEquals(mapperResult.getSql(), "SELECT id, tenant_id FROM tenant_capacity WHERE id>? LIMIT ?"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), new Object[] {id, limit}); } @Test public void testInsertTenantCapacity() { - String sql = tenantCapacityMapperByMySql.insertTenantCapacity(); - Assert.assertEquals(sql, + Object group = "group"; + Object quota = "quota"; + Object maxAggrSize = 10; + Object maxAggrCount = 3; + Object maxSize = 1; + Object createTime = new Timestamp(System.currentTimeMillis()); + + context.putUpdateParameter(FieldConstant.TENANT_ID, tenantId); + context.putUpdateParameter(FieldConstant.GROUP_ID, group); + context.putUpdateParameter(FieldConstant.QUOTA, quota); + context.putUpdateParameter(FieldConstant.MAX_SIZE, maxSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_SIZE, maxAggrSize); + context.putUpdateParameter(FieldConstant.MAX_AGGR_COUNT, maxAggrCount); + context.putUpdateParameter(FieldConstant.GMT_MODIFIED, modified); + + context.putUpdateParameter(FieldConstant.GMT_CREATE, createTime); + + context.putWhereParameter(FieldConstant.TENANT_ID, tenantId); + + MapperResult mapperResult = tenantCapacityMapperByMySql.insertTenantCapacity(context); + Assert.assertEquals(mapperResult.getSql(), "INSERT INTO tenant_capacity (tenant_id, quota, usage, max_size, max_aggr_count, max_aggr_size, " + "gmt_create, gmt_modified) SELECT ?, ?, count(*), ?, ?, ?, ?, ? FROM config_info WHERE tenant_id=?;"); + Assert.assertArrayEquals(mapperResult.getParamList().toArray(), + new Object[] {tenantId, quota, maxSize, maxAggrCount, maxAggrSize, createTime, modified, tenantId}); } -} \ No newline at end of file +}