Browse Source

新增通用 REST API 层

hubin 7 years ago
parent
commit
cb2fd15507
21 changed files with 223 additions and 35 deletions
  1. 2 0
      build.gradle
  2. 4 3
      mybatis-plus-extension/build.gradle
  3. 15 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisMapWrapperFactory.java
  4. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/activerecord/package-info.java
  5. 6 6
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiAssert.java
  6. 80 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiController.java
  7. 16 16
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiResult.java
  8. 1 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/IErrorCode.java
  9. 1 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/package-info.java
  10. 1 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/ApiErrorCode.java
  11. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/package-info.java
  12. 6 6
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/exceptions/ApiException.java
  13. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/package-info.java
  14. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/package-info.java
  15. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/package-info.java
  16. 1 1
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/package-info.java
  17. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/package-info.java
  18. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/package-info.java
  19. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/impl/package-info.java
  20. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/package-info.java
  21. 9 0
      mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/package-info.java

+ 2 - 0
build.gradle

@@ -18,7 +18,9 @@ ext {
         "spring-context-support": "org.springframework:spring-context-support:${springVersion}",
         "spring-jdbc"           : "org.springframework:spring-jdbc:${springVersion}",
         "spring-tx"             : "org.springframework:spring-tx:${springVersion}",
+        "spring-web"             : "org.springframework:spring-web:${springVersion}",
 
+        "javax.servlet-api"         : "javax.servlet:javax.servlet-api:3.1.0",
         "aspectjweaver"         : "org.aspectj:aspectjweaver:1.8.9",
         "mockito"               : "org.mockito:mockito-core:2.13.0",
         "mybatis-ehcache"       : "org.mybatis.caches:mybatis-ehcache:1.1.0",

+ 4 - 3
mybatis-plus-extension/build.gradle

@@ -9,10 +9,11 @@ dependencies {
 
     provided rootProject.ext.dependencies["spring-context-support"]
     provided rootProject.ext.dependencies["spring-jdbc"]
-    testCompile group: 'org.springframework', name: 'spring-web', version: '4.3.5.RELEASE'
-
-    testCompile 'javax.servlet:servlet-api:2.5'
+    provided rootProject.ext.dependencies["javax.servlet-api"]
+    provided rootProject.ext.dependencies["slf4j-api"]
 
+    testCompile rootProject.ext.dependencies["spring-web"]
+    testCompile rootProject.ext.dependencies["javax.servlet-api"]
     testCompile rootProject.ext.dependencies["spring-test"]
     testCompile rootProject.ext.dependencies["fastjson"]
 

+ 15 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/MybatisMapWrapperFactory.java

@@ -1,3 +1,18 @@
+/*
+ * Copyright (c) 2011-2020, hubin (jobob@qq.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
 package com.baomidou.mybatisplus.extension;
 
 import java.util.Map;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/activerecord/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * Active Record 数据模型操作
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.activerecord;

+ 6 - 6
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/RestAssert.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiAssert.java

@@ -21,21 +21,21 @@ import java.util.Map;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.MapUtils;
-import com.baomidou.mybatisplus.extension.exceptions.RestException;
+import com.baomidou.mybatisplus.extension.exceptions.ApiException;
 import com.baomidou.mybatisplus.extension.toolkit.ObjectUtils;
 
 /**
  * <p>
- * REST 业务断言<br>
+ * REST API 业务断言<br>
  * 参考:org.junit.Assert
  * </p>
  *
  * @author hubin
  * @since 2018-06-05
  */
-public class RestAssert {
+public class ApiAssert {
 
-    protected RestAssert() {
+    protected ApiAssert() {
         // to do noting
     }
 
@@ -116,7 +116,7 @@ public class RestAssert {
      * @param errorCode 异常错误码
      */
     public static void fail(IErrorCode errorCode) {
-        throw new RestException(errorCode);
+        throw new ApiException(errorCode);
     }
 
     public static void fail(boolean condition, IErrorCode errorCode) {
@@ -126,7 +126,7 @@ public class RestAssert {
     }
 
     public static void fail(String message) {
-        throw new RestException(message);
+        throw new ApiException(message);
     }
 
     public static void fail(boolean condition, String message) {

+ 80 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiController.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2011-2020, hubin (jobob@qq.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.baomidou.mybatisplus.extension.api;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * <p>
+ * REST API 通用控制器
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+public class ApiController {
+
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    protected HttpServletRequest request;
+    @Autowired
+    protected HttpServletResponse response;
+
+
+    /**
+     * <p>
+     * 请求成功
+     * </p>
+     *
+     * @param data 数据内容
+     * @param <T>  对象泛型
+     * @return
+     */
+    protected <T> ApiResult<T> success(T data) {
+        return ApiResult.ok(data);
+    }
+
+    /**
+     * <p>
+     * 请求失败
+     * </p>
+     *
+     * @param msg 提示内容
+     * @return
+     */
+    protected ApiResult<Object> failed(String msg) {
+        return ApiResult.failed(msg);
+    }
+
+    /**
+     * <p>
+     * 请求失败
+     * </p>
+     *
+     * @param errorCode 请求错误码
+     * @return
+     */
+    protected ApiResult<Object> failed(IErrorCode errorCode) {
+        return ApiResult.failed(errorCode);
+    }
+
+}

+ 16 - 16
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/RestResult.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/ApiResult.java

@@ -16,17 +16,17 @@
 package com.baomidou.mybatisplus.extension.api;
 
 import com.baomidou.mybatisplus.extension.enums.ApiErrorCode;
-import com.baomidou.mybatisplus.extension.exceptions.RestException;
+import com.baomidou.mybatisplus.extension.exceptions.ApiException;
 
 /**
  * <p>
- * API REST 返回结果
+ * REST API 返回结果
  * </p>
  *
  * @author hubin
  * @since 2018-06-05
  */
-public class RestResult<T> {
+public class ApiResult<T> {
 
     /**
      * 业务错误码
@@ -41,11 +41,11 @@ public class RestResult<T> {
      */
     private String msg;
 
-    public RestResult() {
+    public ApiResult() {
         // to do nothing
     }
 
-    public RestResult(IErrorCode errorCode) {
+    public ApiResult(IErrorCode errorCode) {
         if (errorCode == null) {
             errorCode = ApiErrorCode.FAILED;
         }
@@ -53,28 +53,28 @@ public class RestResult<T> {
         this.msg = errorCode.getMsg();
     }
 
-    public static <T> RestResult<T> ok(T data) {
+    public static <T> ApiResult<T> ok(T data) {
         return restResult(data, ApiErrorCode.SUCCESS);
     }
 
-    public static <T> RestResult<T> failed(String msg) {
+    public static <T> ApiResult<T> failed(String msg) {
         return restResult(null, ApiErrorCode.FAILED.getCode(), msg);
     }
 
-    public static <T> RestResult<T> failed(IErrorCode errorCode) {
+    public static <T> ApiResult<T> failed(IErrorCode errorCode) {
         return restResult(null, errorCode);
     }
 
-    public static <T> RestResult<T> restResult(T data, IErrorCode errorCode) {
+    public static <T> ApiResult<T> restResult(T data, IErrorCode errorCode) {
         return restResult(data, errorCode.getCode(), errorCode.getMsg());
     }
 
-    private static <T> RestResult<T> restResult(T data, String code, String msg) {
-        RestResult<T> restResult = new RestResult<>();
-        restResult.setCode(code);
-        restResult.setData(data);
-        restResult.setMsg(msg);
-        return restResult;
+    private static <T> ApiResult<T> restResult(T data, String code, String msg) {
+        ApiResult<T> apiResult = new ApiResult<>();
+        apiResult.setCode(code);
+        apiResult.setData(data);
+        apiResult.setMsg(msg);
+        return apiResult;
     }
 
     public boolean isSuccess() {
@@ -86,7 +86,7 @@ public class RestResult<T> {
      */
     public T serviceData() {
         if (!isSuccess()) {
-            throw new RestException(this.msg);
+            throw new ApiException(this.msg);
         }
         return data;
     }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/IErrorCode.java

@@ -17,7 +17,7 @@ package com.baomidou.mybatisplus.extension.api;
 
 /**
  * <p>
- * 错误码接口
+ * REST API 错误码接口
  * </p>
  *
  * @author hubin

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/api/package-info.java

@@ -1,6 +1,6 @@
 /**
  * <p>
- * 通用 Controller API 层封装
+ * REST API 相关通用类
  * </p>
  *
  * @author hubin

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/ApiErrorCode.java

@@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.extension.api.IErrorCode;
 
 /**
  * <p>
- * 错误码
+ * REST API 错误码
  * </p>
  *
  * @author hubin

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/enums/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 扩展枚举相关枚举类
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.enums;

+ 6 - 6
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/exceptions/RestException.java → mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/exceptions/ApiException.java

@@ -19,33 +19,33 @@ import com.baomidou.mybatisplus.extension.api.IErrorCode;
 
 /**
  * <p>
- * Rest 请求异常类
+ * REST API 请求异常类
  * </p>
  *
  * @author hubin
  * @since 2017-06-26
  */
-public class RestException extends RuntimeException {
+public class ApiException extends RuntimeException {
 
     /**
      * 错误码
      */
     private IErrorCode errorCode;
 
-    public RestException(IErrorCode errorCode) {
+    public ApiException(IErrorCode errorCode) {
         super(errorCode.getMsg());
         this.errorCode = errorCode;
     }
 
-    public RestException(String message) {
+    public ApiException(String message) {
         super(message);
     }
 
-    public RestException(Throwable cause) {
+    public ApiException(Throwable cause) {
         super(cause);
     }
 
-    public RestException(String message, Throwable cause) {
+    public ApiException(String message, Throwable cause) {
         super(message, cause);
     }
 

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/handlers/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 扩展相关处理器
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.handlers;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 扩展主键自增生成器
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.incrementer;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 扩展 SQL 注入器
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.injector;

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/package-info.java

@@ -4,6 +4,6 @@
  * </p>
  *
  * @author yuxiaobin
- * @date 2018/2/6
+ * @since 2018/2/6
  */
 package com.baomidou.mybatisplus.extension;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 扩展的各种插件
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.plugins;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 分页相关类
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.plugins.pagination;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/impl/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 通用 service 实现
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.service.impl;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 通用 Service 接口
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.service;

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * <p>
+ * 工具类
+ * </p>
+ *
+ * @author hubin
+ * @since 2018-06-08
+ */
+package com.baomidou.mybatisplus.extension.toolkit;