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

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

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

我們?cè)诜庋b方法的時(shí)候,有的時(shí)候除了需要返回?cái)?shù)據(jù)結(jié)果集data,有的時(shí)候需要返回code(或者status) 或者 msg ,

此時(shí)可以采取下面兩種方式進(jìn)行封裝方法的返回值:

一.返回結(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不通過校驗(yàn))
   {
    result.put("status", "-1");
    result.put("msg", "....");
    return result;
   }
   if(條件2不通過校驗(yàn))
   {
    result.put("status", "-1");
    result.put("msg", "....");
    return result;
   }
   //封裝返回?cái)?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())) 
  {
   //校驗(yàn)不通過
   return;
  }else 
  {
   //如果校驗(yàn)通過,拿到數(shù)據(jù)
   Object data = result.get("data");
   //TODO
  }
 }

二.使用泛型對(duì)象接收

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.對(duì)應(yīng)需要返回?cái)?shù)據(jù)T data 的 方法

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

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

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

補(bǔ)充知識(shí):java后端封裝標(biāo)準(zhǔn)返回類到前端

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

1、創(chuàng)建對(duì)象

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

import java.util.List;
 
/**
 * @Author: John
 * @Description:  返回前端的統(tǒng)一對(duì)象
 * @Date: 2019/8/3 10:03
 * @param: null
 * @return:
 */
public class ReturnParam<T> {
 
  private Boolean success;  //請(qǐng)求是否成功
  private List<T> list;    //結(jié)果的集合
  private int total;     //結(jié)果的總條數(shù)
  private Object obj;     //其他的對(duì)象,可以使用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)用就會(huì)使用下面的格式調(diào)用,下面附上我的一個(gè)小例子:

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:  用于測(cè)試的接口
 * @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對(duì)象,并用于裝其他的東西
    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ù)格式,很干凈,很舒服,很符合有強(qiáng)迫癥的程序員觀看:

4、結(jié)語:

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

相關(guān)文章

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

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

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

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

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

    Java實(shí)現(xiàn)CORS跨域請(qǐng)求的實(shí)現(xiàn)方法

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

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

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

    Idea 自動(dòng)生成測(cè)試的實(shí)現(xiàn)步驟

    當(dāng)我們?cè)趯懲暌恍┙涌诜椒ê笮枰獪y(cè)試時(shí),一個(gè)一個(gè)新建測(cè)試類比較麻煩 idea給我們提供了快捷辦法,本文主要介紹了Idea 自動(dòng)生成測(cè)試的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • java集成開發(fā)SpringBoot生成接口文檔示例實(shí)現(xiàn)

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

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

    Java集合-HashMap

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

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

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

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

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

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

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

最新評(píng)論

广宗县| 金川县| 卓资县| 利津县| 呼玛县| 成都市| 澄城县| 龙胜| 竹北市| 肇源县| 盐亭县| 潞城市| 靖安县| 仁寿县| 理塘县| 花垣县| 南皮县| 寿阳县| 哈密市| 长乐市| 介休市| 蕉岭县| 阿拉善左旗| 建平县| 都匀市| 青岛市| 旬邑县| 长岭县| 德州市| 鹤庆县| 全椒县| 个旧市| 苍南县| 石屏县| 闻喜县| 宾川县| 含山县| 富裕县| 洛川县| 永泰县| 遵义市|