java方法通用返回结果集封装操作
我们在封装方法的时候,有的时候除了需要返回数据结果集data,有的时候需要返回code(或者status)或者msg,
此时可以采取下面两种方式进行封装方法的返回值:
一.返回结果使用HashMap接收
1.方法中的数据封装到hashmap中
publicMapresult(Objectobject) { Map result=newHashMap (); result.put("status","1"); result.put("msg","成功"); if(条件1不通过校验) { result.put("status","-1"); result.put("msg","...."); returnresult; } if(条件2不通过校验) { result.put("status","-1"); result.put("msg","...."); returnresult; } //封装返回数据 Objectdata=newObject(); result.put("data",data); returnresult; }
2.方法调用:
publicvoidtest() { Mapresult=this.result(newObject()); if(!"1".equals(result.get("status").toString())) { //校验不通过 return; }else { //如果校验通过,拿到数据 Objectdata=result.get("data"); //TODO } }
二.使用泛型对象接收
1.通用结果集封装
publicclassResult{ privatestaticfinalStringSUCCESS="1"; privatestaticfinalStringFAIL="0"; privateStringcode; privateStringmsg; privateTData; publicResult(Stringcode) { this.code=code; } publicResult(Stringcode,Stringmsg) { super(); this.code=code; this.msg=msg; } publicResult(Stringcode,Stringmsg,Tdata) { super(); this.code=code; this.msg=msg; Data=data; } publicStringgetCode() { returncode; } publicvoidsetCode(Stringcode) { this.code=code; } publicStringgetMsg() { returnmsg; } publicvoidsetMsg(Stringmsg) { this.msg=msg; } publicTgetData() { returnData; } publicvoidsetData(Tdata) { Data=data; } publicstatic Result ok(Tobject) { returnnewResult (SUCCESS,"",object); } publicstatic Result ok() { returnnewResult (SUCCESS); } publicstatic Result nok(Stringmsg) { returnnewResult (FAIL,msg); } publicstatic Result nok() { returnnewResult (FAIL); } publicstatic Result nok(Stringcode,Stringmsg) { returnnewResult (code,msg); } publicstatic Result nok(Stringcode,Stringmsg,Tobject) { returnnewResult (code,msg,object); } publicbooleanisOk() { returnResult.equals(getCode()); } }
2.对应需要返回数据Tdata的方法
publicResultresult(Objectobject) { if(条件1不通过校验) { returnResult.nok("。。。");; } if(条件2不通过校验) { returnResult.nok("。。。");; } returnResult.ok(T); }
3.方法调用:
publicvoidtest { Resultresult=this.result(object); if(!result.isOk()) { //校验不通过 return; }else { //如果校验通过,拿到数据 Objectdata=result.getData(); //TODO } }
补充知识:java后端封装标准返回类到前端
在日常开发中,我们后端和前端最好是约定一个数据格式,用于后端封装好数据,然后返回前端,前端就可以很简单地就解析了,下面是我总结出来经常会那么用的模板,可以参考一下:
1、创建对象
直接在实体包下面新建一个ReturnParam对象,对象内容包括了是否成功标记、list结果集合、total总数(用于前端分页)还有可拓展的其他对象,直接看代码吧:
importjava.util.List; /** *@Author:John *@Description:返回前端的统一对象 *@Date:2019/8/310:03 *@param:null *@return: */ publicclassReturnParam{ privateBooleansuccess;//请求是否成功 privateList list;//结果的集合 privateinttotal;//结果的总条数 privateObjectobj;//其他的对象,可以使用Map 的格式添加 publicBooleangetSuccess(){ returnsuccess; } publicvoidsetSuccess(Booleansuccess){ this.success=success; } publicList getList(){ returnlist; } publicvoidsetList(List list){ this.list=list; } publicintgetTotal(){ returntotal; } publicvoidsetTotal(inttotal){ this.total=total; } publicObjectgetObj(){ returnobj; } publicvoidsetObj(Objectobj){ this.obj=obj; } }
2、调用
在代码中调用就会使用下面的格式调用,下面附上我的一个小例子:
packagecom.tw.controller; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.GetMapping; importorg.springframework.web.bind.annotation.RequestMapping; importjava.util.ArrayList; importjava.util.HashMap; importjava.util.List; importjava.util.Map; /** *@Author:John *@Description:用于测试的接口 *@Date:2019/8/221:44 *@param:null *@return: */ @RequestMapping("/debug") @Controller publicclassDebugController{ //日志 privatestaticLoggerlogger=LoggerFactory.getLogger(DebugController.class); @GetMapping("/test") publicReturnParamtest(){ logger.info("============调用debug的test方法"); //List集合中的数据 Listthings=newArrayList<>(); things.add("apple"); things.add("pear"); things.add("banana"); //添加其他类型1 Map sort=newHashMap<>(); sort.put("sort","fruit"); //添加其他类型的数据2 Stringnama="John"; intage=27; //声明Object对象,并用于装其他的东西 Map objectMap=newHashMap<>(); objectMap.put("sort",sort); objectMap.put("name",nama); objectMap.put("age",age); ReturnParamreturnParam=newReturnParam(); returnParam.setSuccess(true); returnParam.setList(things); returnParam.setTotal(things.size()); //obj用于装qita类型的数据统一返回到前端 returnParam.setObj(objectMap); returnreturnParam; } }
3、返回
查看返回前端的数据格式,很干净,很舒服,很符合有强迫症的程序员观看:
4、结语:
开发过程中需要多多总结,遇到一些感兴趣的东西可以随手记下来,总比过去了就过去了,什么都不留下来要好很多,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。