Browse Source

FIX #299 修复sqlServer2005分页边界问题

Arker 8 years ago
parent
commit
4c5210e788

+ 4 - 1
src/main/java/com/baomidou/mybatisplus/plugins/pagination/dialects/SQLServer2005Dialect.java

@@ -65,7 +65,10 @@ public class SQLServer2005Dialect implements IDialect {
         StringBuilder sql = new StringBuilder();
         StringBuilder sql = new StringBuilder();
         sql.append("WITH query AS (SELECT ").append(distinctStr).append("TOP 100 PERCENT ")
         sql.append("WITH query AS (SELECT ").append(distinctStr).append("TOP 100 PERCENT ")
                 .append(" ROW_NUMBER() OVER (").append(orderby).append(") as __row_number__, ").append(pagingBuilder)
                 .append(" ROW_NUMBER() OVER (").append(orderby).append(") as __row_number__, ").append(pagingBuilder)
-                .append(") SELECT * FROM query WHERE __row_number__ BETWEEN ").append(offset).append(" AND ")
+                .append(") SELECT * FROM query WHERE __row_number__ BETWEEN ")
+               //FIX#299:原因:mysql中limit 10(offset,size) 是从第10开始(不包含10),;而这里用的BETWEEN是两边都包含,所以改为offset+1
+                .append(offset+1)
+                .append(" AND ")
                 .append(offset + limit).append(" ORDER BY __row_number__");
                 .append(offset + limit).append(" ORDER BY __row_number__");
         return sql.toString();
         return sql.toString();
     }
     }