From 7c47311649aa67a731b1927065b688adaeb0def1 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 6 Aug 2025 17:34:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=BA=93=EF=BC=9A=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E8=A1=A8=E5=90=8D=E5=88=97=E5=90=8D=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sf/controller/TableColumnController.java | 7 +++++ .../ustb/sf/service/TableColumnService.java | 2 ++ .../service/impl/TableColumnServiceImpl.java | 26 +++++++++++++++++++ .../java/iet/ustb/sf/util/CheckUtils.java | 12 +++++++++ 4 files changed, 47 insertions(+) diff --git a/src/main/java/iet/ustb/sf/controller/TableColumnController.java b/src/main/java/iet/ustb/sf/controller/TableColumnController.java index c33764c..4f734ff 100644 --- a/src/main/java/iet/ustb/sf/controller/TableColumnController.java +++ b/src/main/java/iet/ustb/sf/controller/TableColumnController.java @@ -44,4 +44,11 @@ public class TableColumnController { List result = tableColumnService.getColumnsByTableName(tableName); return R.ok(result); } + + @Operation(summary = "根据表名列名分页查询数据") + @PostMapping("/getDataByTableName") + public R> getDataByTableName(@RequestBody JSONObject params) { + Page result = tableColumnService.getDataByTableName(params); + return R.ok(result); + } } diff --git a/src/main/java/iet/ustb/sf/service/TableColumnService.java b/src/main/java/iet/ustb/sf/service/TableColumnService.java index be403fa..384b751 100644 --- a/src/main/java/iet/ustb/sf/service/TableColumnService.java +++ b/src/main/java/iet/ustb/sf/service/TableColumnService.java @@ -23,4 +23,6 @@ public interface TableColumnService extends IService { List getTablesInfo(); List getColumnsByTableName(String tableName); + + Page getDataByTableName(JSONObject params); } diff --git a/src/main/java/iet/ustb/sf/service/impl/TableColumnServiceImpl.java b/src/main/java/iet/ustb/sf/service/impl/TableColumnServiceImpl.java index ca6a969..102c36d 100644 --- a/src/main/java/iet/ustb/sf/service/impl/TableColumnServiceImpl.java +++ b/src/main/java/iet/ustb/sf/service/impl/TableColumnServiceImpl.java @@ -1,7 +1,10 @@ package iet.ustb.sf.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; import iet.ustb.sf.domain.Columns; import iet.ustb.sf.domain.TableColumn; import iet.ustb.sf.domain.Tables; @@ -14,6 +17,7 @@ import iet.ustb.sf.util.CheckUtils; import iet.ustb.sf.vo.ColumnVo; import iet.ustb.sf.vo.TableVo; import jakarta.annotation.Resource; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -118,6 +122,28 @@ public class TableColumnServiceImpl extends ServiceImpl getDataByTableName(JSONObject params) { + String columns = params.getString("columns"); + String tableName = params.getString("tableName"); + int pageIndex = Optional.ofNullable(params.getInteger("pageIndex")).orElse(1); + int pageSize = Optional.ofNullable(params.getInteger("pageSize")).orElse(10); + if (StringUtils.isEmpty(columns)) { + return new Page<>(pageIndex, pageSize); + } + CheckUtils.checkColumns(columns, tableName); + + String countSql = "SELECT COUNT(1) FROM " + tableName; + long total = SqlRunner.db().selectCount(countSql); + Page> page = new Page<>(pageIndex, pageSize); + page.setTotal(total); + + long offset = (long) (pageIndex - 1) * pageSize; + String sql = "SELECT " + columns + " FROM " + tableName + " LIMIT " + pageSize + " OFFSET " + offset; + + return SqlRunner.db().selectPage(page, sql); + } } diff --git a/src/main/java/iet/ustb/sf/util/CheckUtils.java b/src/main/java/iet/ustb/sf/util/CheckUtils.java index ef348b3..ad42c38 100644 --- a/src/main/java/iet/ustb/sf/util/CheckUtils.java +++ b/src/main/java/iet/ustb/sf/util/CheckUtils.java @@ -39,4 +39,16 @@ public class CheckUtils { long cnt = SqlRunner.db().selectCount(sql); ThrowUtils.throwIf(cnt <= 0, new RuntimeException("表" + tableName + "不存在!")); } + + /** + * 列名验证 + * + * @param columns 列名(多个列表以逗号分割) + * @param tableName 表名 + */ + public static void checkColumns(String columns, String tableName) { + checkEmpty(columns, "列名"); + String sql = "SELECT " + columns + " FROM " + tableName + " limit 5"; + SqlRunner.db().selectList(sql); + } }