Просмотр исходного кода

增加分页工具类,针对自定义sql,快捷的分页实现

liutao 8 лет назад
Родитель
Сommit
1a5f954d07

+ 65 - 0
src/main/java/com/baomidou/mybatisplus/plugins/PageHelper.java

@@ -0,0 +1,65 @@
+package com.baomidou.mybatisplus.plugins;
+
+import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.plugins.pagination.Pagination;
+
+/**
+ * 分页工具类
+ *
+ * @author liutao
+ * 2017-06-24 上午10:42
+ */
+
+public class PageHelper {
+
+    /**
+     * 分页本地线程变量
+     */
+    private static final ThreadLocal<Pagination> pageThl = new ThreadLocal<>();
+
+    /**
+     * 获取总条数
+     * @return
+     */
+    public static int getTotal(){
+        if (isPageable()) {
+            return pageThl.get().getTotal();
+        } else {
+            throw new MybatisPlusException("当前线程并没有启动分页,请在查询前调用PageHelper.startPage");
+        }
+    }
+
+    /**
+     * 获取分页
+     * @return
+     */
+    public static Pagination getPagination(){
+        return pageThl.get();
+    }
+
+    /**
+     * 设置分页
+     * @param page
+     */
+    public static void setPagination(Pagination page){
+        pageThl.set(page);
+    }
+
+    /**
+     * 启动分页
+     * @param current 当前页
+     * @param size 页大小
+     */
+    public static void startPage(int current, int size){
+        Pagination page = new Pagination(current, size);
+        pageThl.set(page);
+    }
+
+    /**
+     * 是否存在分页
+     * @return
+     */
+    public static boolean isPageable(){
+        return pageThl.get() != null ? true : false;
+    }
+}

+ 6 - 1
src/main/java/com/baomidou/mybatisplus/plugins/PaginationInterceptor.java

@@ -85,8 +85,13 @@ public class PaginationInterceptor implements Interceptor {
         RowBounds rowBounds = (RowBounds) metaStatementHandler.getValue("delegate.rowBounds");
         /* 不需要分页的场合 */
         if (rowBounds == null || rowBounds == RowBounds.DEFAULT) {
-            return invocation.proceed();
+            // @lt 采用ThreadLocal变量处理的分页
+            rowBounds = PageHelper.getPagination();
+            if (rowBounds == null){
+                return invocation.proceed();
+            }
         }
+        // 针对定义了rowBounds,做为mapper接口方法的参数
         BoundSql boundSql = (BoundSql) metaStatementHandler.getValue("delegate.boundSql");
         String originalSql = boundSql.getSql();
         Connection connection = (Connection) invocation.getArgs()[0];

+ 0 - 1
src/main/java/com/baomidou/mybatisplus/service/impl/ServiceImpl.java

@@ -320,5 +320,4 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
         page.setRecords(baseMapper.selectPage(page, wrapper));
         return page;
     }
-
 }