最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java方法通用返回結(jié)果集封裝操作

 更新時間:2020年08月24日 08:44:51   作者:如來神掌十八式  
這篇文章主要介紹了java方法通用返回結(jié)果集封裝操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我們在封裝方法的時候,有的時候除了需要返回數(shù)據(jù)結(jié)果集data,有的時候需要返回code(或者status) 或者 msg ,

此時可以采取下面兩種方式進行封裝方法的返回值:

一.返回結(jié)果使用HashMap接收

1.方法中的數(shù)據(jù)封裝到hashmap中

 public Map<String,Object> result(Object object)
 {
   
   Map<String,Object> result = new HashMap<String, Object>();
   result.put("status", "1");
   result.put("msg", "成功");
   if(條件1不通過校驗)
   {
    result.put("status", "-1");
    result.put("msg", "....");
    return result;
   }
   if(條件2不通過校驗)
   {
    result.put("status", "-1");
    result.put("msg", "....");
    return result;
   }
   //封裝返回數(shù)據(jù)
   Object data = new Object();
   result.put("data", data);
   return result;
 }

2.方法調(diào)用:

 public void test()
 { 
  
  Map<String,Object> result = this.result(new Object());
  if(!"1".equals(result.get("status").toString())) 
  {
   //校驗不通過
   return;
  }else 
  {
   //如果校驗通過,拿到數(shù)據(jù)
   Object data = result.get("data");
   //TODO
  }
 }

二.使用泛型對象接收

1.通用結(jié)果集封裝

public class Result<T>
{
 
 private static final String SUCCESS = "1";
 
 private static final String FAIL = "0";
 
 private String code;
 
 private String msg;
 
 private T Data;
 
 public Result(String code)
 {
  this.code = code;
 }
 
 public Result(String code, String msg)
 {
  super();
  this.code = code;
  this.msg = msg;
 }
 
 public Result(String code, String msg, T data)
 {
  super();
  this.code = code;
  this.msg = msg;
  Data = data;
 }
 
 public String getCode()
 {
  return code;
 }
 
 public void setCode(String code)
 {
  this.code = code;
 }
 
 public String getMsg()
 {
  return msg;
 }
 
 public void setMsg(String msg)
 {
  this.msg = msg;
 }
 
 public T getData()
 {
  return Data;
 }
 
 public void setData(T data)
 {
  Data = data;
 }
 
 public static <T> Result<T> ok(T object)
 {
  return new Result<T>(SUCCESS, "", object);
 }
 
 public static <T> Result<T> ok()
 {
  return new Result<T>(SUCCESS);
 }
 
 public static <T> Result<T> nok(String msg)
 {
  return new Result<T>(FAIL, msg);
 }
 
 public static <T> Result<T> nok()
 {
  return new Result<T>(FAIL);
 }
 
 public static <T> Result<T> nok(String code, String msg)
 {
  return new Result<T>(code, msg);
 }
 
 public static <T> Result<T> nok(String code, String msg, T object)
 {
  return new Result<T>(code, msg, object);
 }
 
 public boolean isOk()
 {
  return Result.equals(getCode());
 }
}

2.對應(yīng)需要返回數(shù)據(jù)T data 的 方法

public Result<T> result (Object object)
{
  if(條件1不通過校驗)
  {
   return Result.nok("。。。");;
  }
  if(條件2不通過校驗)
  {
   return Result.nok("。。。");;
  }
  
  return Result.ok(T);
}

3.方法調(diào)用:

 public void test
 { 
  
  Result<T> result = this.result(object);
  if(!result.isOk()) 
  {
   //校驗不通過
   return;
  }else 
  {
   //如果校驗通過,拿到數(shù)據(jù)
   Object data = result.getData();
   //TODO
  }
 }

補充知識:java后端封裝標準返回類到前端

在日常開發(fā)中,我們后端和前端最好是約定一個數(shù)據(jù)格式,用于后端封裝好數(shù)據(jù),然后返回前端,前端就可以很簡單地就解析了,下面是我總結(jié)出來經(jīng)常會那么用的模板,可以參考一下:

1、創(chuàng)建對象

直接在實體包下面新建一個ReturnParam對象,對象內(nèi)容包括了是否成功標記、list結(jié)果集合、total總數(shù)(用于前端分頁)還有可拓展的其他對象,直接看代碼吧:

import java.util.List;
 
/**
 * @Author: John
 * @Description:  返回前端的統(tǒng)一對象
 * @Date: 2019/8/3 10:03
 * @param: null
 * @return:
 */
public class ReturnParam<T> {
 
  private Boolean success;  //請求是否成功
  private List<T> list;    //結(jié)果的集合
  private int total;     //結(jié)果的總條數(shù)
  private Object obj;     //其他的對象,可以使用Map<String, Object>的格式添加
 
 
  public Boolean getSuccess() {
    return success;
  }
 
  public void setSuccess(Boolean success) {
    this.success = success;
  }
 
  public List<T> getList() {
    return list;
  }
 
  public void setList(List<T> list) {
    this.list = list;
  }
 
  public int getTotal() {
    return total;
  }
 
  public void setTotal(int total) {
    this.total = total;
  }
 
  public Object getObj() {
    return obj;
  }
 
  public void setObj(Object obj) {
    this.obj = obj;
  }
}
 

2、調(diào)用

在代碼中調(diào)用就會使用下面的格式調(diào)用,下面附上我的一個小例子:

package com.tw.controller;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @Author: John
 * @Description:  用于測試的接口
 * @Date: 2019/8/2 21:44
 * @param: null
 * @return: 
 */
@RequestMapping("/debug")
@Controller
public class DebugController {
 
  //日志
  private static Logger logger = LoggerFactory.getLogger(DebugController.class);
 
  @GetMapping("/test")
  public ReturnParam test() {
    logger.info("============調(diào)用debug的test方法");
    //List集合中的數(shù)據(jù)
    List<String> things = new ArrayList<>();
    things.add("apple");
    things.add("pear");
    things.add("banana");
 
    //添加其他類型1
    Map<String, String> sort = new HashMap<>();
    sort.put("sort", "fruit");
 
    //添加其他類型的數(shù)據(jù)2
    String nama = "John";
    int age = 27;
 
    //聲明Object對象,并用于裝其他的東西
    Map<String, Object> objectMap = new HashMap<>();
    objectMap.put("sort", sort);
    objectMap.put("name", nama);
    objectMap.put("age", age);
 
    ReturnParam returnParam = new ReturnParam();
    returnParam.setSuccess(true);
    returnParam.setList(things);
    returnParam.setTotal(things.size());
    //obj用于裝qita類型的數(shù)據(jù)統(tǒng)一返回到前端
    returnParam.setObj(objectMap); 
    return returnParam;
  }
}

3、返回

查看返回前端的數(shù)據(jù)格式,很干凈,很舒服,很符合有強迫癥的程序員觀看:

4、結(jié)語:

開發(fā)過程中需要多多總結(jié),遇到一些感興趣的東西可以隨手記下來,總比過去了就過去了,什么都不留下來要好很多,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java Web監(jiān)聽器如何實現(xiàn)定時發(fā)送郵件

    Java Web監(jiān)聽器如何實現(xiàn)定時發(fā)送郵件

    這篇文章主要介紹了Java Web監(jiān)聽器如何實現(xiàn)定時發(fā)送郵件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Java 線程的優(yōu)先級(setPriority)案例詳解

    Java 線程的優(yōu)先級(setPriority)案例詳解

    這篇文章主要介紹了Java 線程的優(yōu)先級(setPriority)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java實現(xiàn)CORS跨域請求的實現(xiàn)方法

    Java實現(xiàn)CORS跨域請求的實現(xiàn)方法

    本篇文章主要介紹了Java實現(xiàn)CORS跨域請求的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Spring動態(tài)數(shù)據(jù)源實現(xiàn)讀寫分離詳解

    Spring動態(tài)數(shù)據(jù)源實現(xiàn)讀寫分離詳解

    這篇文章主要為大家詳細介紹了Spring動態(tài)數(shù)據(jù)源實現(xiàn)讀寫分離,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Idea 自動生成測試的實現(xiàn)步驟

    Idea 自動生成測試的實現(xiàn)步驟

    當我們在寫完一些接口方法后需要測試時,一個一個新建測試類比較麻煩 idea給我們提供了快捷辦法,本文主要介紹了Idea 自動生成測試的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • java集成開發(fā)SpringBoot生成接口文檔示例實現(xiàn)

    java集成開發(fā)SpringBoot生成接口文檔示例實現(xiàn)

    這篇文章主要為大家介紹了java集成開發(fā)SpringBoot如何生成接口文檔的示例實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Java集合-HashMap

    Java集合-HashMap

    這篇文章主要介紹了Java集合HashMap,也叫散列表,是一種非常重要的數(shù)據(jù)結(jié)構(gòu),應(yīng)用場景及其豐富,許多緩存技術(shù)(比如memcached)的核心其實就是在內(nèi)存中維護一張大的哈希表,下面來看看文章的具體內(nèi)容吧,需要的小伙伴也可參考一下
    2022-01-01
  • Spring定時任務(wù)使用及如何使用郵件監(jiān)控服務(wù)器

    Spring定時任務(wù)使用及如何使用郵件監(jiān)控服務(wù)器

    這篇文章主要介紹了Spring定時任務(wù)使用及如何使用郵件監(jiān)控服務(wù)器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java中Socket設(shè)置連接超時的代碼分享

    Java中Socket設(shè)置連接超時的代碼分享

    在我們?nèi)粘_B接中,如果超時時長過長的話,在開發(fā)時會影響測試,下面這篇文章主要給大家分享了關(guān)于Java中Socket設(shè)置連接超時的代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • 原生Java操作mysql數(shù)據(jù)庫過程解析

    原生Java操作mysql數(shù)據(jù)庫過程解析

    這篇文章主要介紹了原生Java操作mysql數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11

最新評論

荔浦县| 太谷县| 长沙县| 苗栗市| 吉林市| 施甸县| 河源市| 阿坝县| 高州市| 鄯善县| 云安县| 石狮市| 道真| 长海县| 台江县| 邛崃市| 仁布县| 同心县| 淮滨县| 广灵县| 饶阳县| 高碑店市| 日喀则市| 乐平市| 濉溪县| 巴林右旗| 台前县| 平凉市| 台江县| 阳城县| 黔西| 舟山市| 布拖县| 铜山县| 榆社县| 固镇县| 明星| 茂名市| 黎平县| 读书| 柳江县|