From aacecc759cce795982fe6e5bd301e8f03a804608 Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Sun, 10 Oct 2021 09:55:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E`db.page(countSql,sql)`?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssssssss/magicapi/modules/SQLModule.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java b/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java index 8161cbeb..9a3737da 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java @@ -430,14 +430,23 @@ public String getDataSourceName() { return this.dataSourceNode == null ? "unknown" : dataSourceNode.getName(); } - @UnableCall - public Object page(BoundSql boundSql, Page page) { - assertDatasourceNotNull(); - Dialect dialect = dataSourceNode.getDialect(dialectAdapter); - BoundSql countBoundSql = boundSql.copy(dialect.getCountSql(boundSql.getSql())); - int count = countBoundSql.getCacheValue(this.sqlInterceptors, () -> dataSourceNode.getJdbcTemplate().query(countBoundSql.getSql(), new SingleRowResultSetExtractor<>(Integer.class), countBoundSql.getParameters())); + /** + * 分页查询(手动传入分页SQL语句) + */ + @Comment("执行分页查询,分页`SQL`语句手动传入") + public Object page(String countSql, String sql){ + int count = selectInt(new BoundSql(countSql, this)); + Page page = pageProvider.getPage(MagicScriptContext.get()); + BoundSql boundSql = new BoundSql(sql, this); + return page(count, boundSql, page, null); + } + + private Object page(int count, BoundSql boundSql, Page page, Dialect dialect) { List> list = null; - if (count > 0) { + if(count > 0){ + if(dialect == null){ + dialect = dataSourceNode.getDialect(dialectAdapter); + } BoundSql pageBoundSql = buildPageBoundSql(dialect, boundSql, page.getOffset(), page.getLimit()); list = pageBoundSql.getCacheValue(this.sqlInterceptors, () -> queryForList(pageBoundSql)); } @@ -445,6 +454,15 @@ public Object page(BoundSql boundSql, Page page) { return resultProvider.buildPageResult(requestEntity, page, count, list); } + @UnableCall + public Object page(BoundSql boundSql, Page page) { + assertDatasourceNotNull(); + Dialect dialect = dataSourceNode.getDialect(dialectAdapter); + BoundSql countBoundSql = boundSql.copy(dialect.getCountSql(boundSql.getSql())); + int count = countBoundSql.getCacheValue(this.sqlInterceptors, () -> selectInt(countBoundSql)); + return page(count, boundSql, page, dialect); + } + /** * 查询int值 */