Skip to content

Commit

Permalink
新增db.page(countSql,sql)方法
Browse files Browse the repository at this point in the history
  • Loading branch information
javamxd committed Oct 10, 2021
1 parent cec9bfb commit aacecc7
Showing 1 changed file with 25 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -430,21 +430,39 @@ 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<Map<String, Object>> 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));
}
RequestEntity requestEntity = RequestContext.getRequestEntity();
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值
*/
Expand Down

0 comments on commit aacecc7

Please sign in to comment.