Browse Source

获取分页 totalRwo 的 sql 生成抽取到 Dialect 中

James 4 years ago
parent
commit
a4056a62ae

+ 2 - 2
src/main/java/com/jfinal/plugin/activerecord/DbPro.java

@@ -600,7 +600,7 @@ public class DbPro {
 		Connection conn = null;
 		try {
 			conn = config.getConnection();
-			String totalRowSql = "select count(*) " + config.dialect.replaceOrderBy(sqlExceptSelect);
+			String totalRowSql = config.dialect.forPaginateTotalRow(select, sqlExceptSelect);
 			StringBuilder findSql = new StringBuilder();
 			findSql.append(select).append(' ').append(sqlExceptSelect);
 			return doPaginateByFullSql(config, conn, pageNumber, pageSize, isGroupBySql, totalRowSql, findSql, paras);
@@ -651,7 +651,7 @@ public class DbPro {
 	}
 	
 	protected Page<Record> paginate(Config config, Connection conn, int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras) throws SQLException {
-		String totalRowSql = "select count(*) " + config.dialect.replaceOrderBy(sqlExceptSelect);
+		String totalRowSql = config.dialect.forPaginateTotalRow(select, sqlExceptSelect);
 		StringBuilder findSql = new StringBuilder();
 		findSql.append(select).append(' ').append(sqlExceptSelect);
 		return doPaginateByFullSql(config, conn, pageNumber, pageSize, null, totalRowSql, findSql, paras);

+ 1 - 1
src/main/java/com/jfinal/plugin/activerecord/Model.java

@@ -503,7 +503,7 @@ public abstract class Model<M extends Model> implements Serializable {
 		Connection conn = null;
 		try {
 			conn = config.getConnection();
-			String totalRowSql = "select count(*) " + config.dialect.replaceOrderBy(sqlExceptSelect);
+			String totalRowSql = config.dialect.forPaginateTotalRow(select, sqlExceptSelect);
 			StringBuilder findSql = new StringBuilder();
 			findSql.append(select).append(' ').append(sqlExceptSelect);
 			return doPaginateByFullSql(config, conn, pageNumber, pageSize, isGroupBySql, totalRowSql, findSql, paras);

+ 9 - 0
src/main/java/com/jfinal/plugin/activerecord/dialect/Dialect.java

@@ -323,6 +323,15 @@ public abstract class Dialect {
 			}
 		}
 	}
+	
+	/**
+	 * 为分页方法生成查询 totalRow 值的 sql
+	 * @param select sql 语句的 select 部分
+	 * @param sqlExceptSelect sql 语句除了 select 以外的部分
+	 */
+	public String forPaginateTotalRow(String select, String sqlExceptSelect) {
+		return "select count(*) " + replaceOrderBy(sqlExceptSelect);
+	}
 }