java方法通用返回结果集封装操作

我们在封装方法的时候,有的时候除了需要返回数据结果集data,有的时候需要返回code(或者status) 或者 msg ,

此时可以采取下面两种方式进行封装方法的返回值:

一.返回结果使用HashMap接收

1.方法中的数据封装到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;

}

//封装返回数据

Object data = new Object();

result.put("data", data);

return result;

}

2.方法调用:

public void test()

{

Map<String,Object> result = this.result(new Object());

if(!"1".equals(result.get("status").toString()))

{

//校验不通过

return;

}else

{

//如果校验通过,拿到数据

Object data = result.get("data");

//TODO

}

}

二.使用泛型对象接收

1.通用结果集封装

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.对应需要返回数据T data 的 方法

public Result<T> result (Object object)

{

if(条件1不通过校验)

{

return Result.nok("。。。");;

}

if(条件2不通过校验)

{

return Result.nok("。。。");;

}

return Result.ok(T);

}

3.方法调用:

public void test

{

Result<T> result = this.result(object);

if(!result.isOk())

{

//校验不通过

return;

}else

{

//如果校验通过,拿到数据

Object data = result.getData();

//TODO

}

}

补充知识:java后端封装标准返回类到前端

在日常开发中,我们后端和前端最好是约定一个数据格式,用于后端封装好数据,然后返回前端,前端就可以很简单地就解析了,下面是我总结出来经常会那么用的模板,可以参考一下:

1、创建对象

直接在实体包下面新建一个ReturnParam对象,对象内容包括了是否成功标记、list结果集合、total总数(用于前端分页)还有可拓展的其他对象,直接看代码吧:

import java.util.List;

/**

* @Author: John

* @Description: 返回前端的统一对象

* @Date: 2019/8/3 10:03

* @param: null

* @return:

*/

public class ReturnParam<T> {

private Boolean success; //请求是否成功

private List<T> list; //结果的集合

private int total; //结果的总条数

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、调用

在代码中调用就会使用下面的格式调用,下面附上我的一个小例子:

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("============调用debug的test方法");

//List集合中的数据

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");

//添加其他类型的数据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类型的数据统一返回到前端

returnParam.setObj(objectMap);

return returnParam;

}

}

3、返回

查看返回前端的数据格式,很干净,很舒服,很符合有强迫症的程序员观看:

4、结语:

开发过程中需要多多总结,遇到一些感兴趣的东西可以随手记下来,总比过去了就过去了,什么都不留下来要好很多,希望能给大家一个参考,也希望大家多多支持。

以上是 java方法通用返回结果集封装操作 的全部内容, 来源链接: utcz.com/z/339046.html

回到顶部