1、返回消息统一定义文件CodeMsg.java

  1. public class CodeMsg {
  2. private int retCode;
  3. private String message;
  4. // 按照模块定义CodeMsg
  5. // 通用异常
  6. public static CodeMsg SUCCESS = new CodeMsg(0,"success");
  7. public static CodeMsg SERVER_EXCEPTION = new CodeMsg(500100,"服务端异常");
  8. public static CodeMsg PARAMETER_ISNULL = new CodeMsg(500101,"输入参数为空");
  9. // 业务异常
  10. public static CodeMsg USER_NOT_EXSIST = new CodeMsg(500102,"用户不存在");
  11. public static CodeMsg ONLINE_USER_OVER = new CodeMsg(500103,"在线用户数超出允许登录的最大用户限制。");
  12. public static CodeMsg SESSION_NOT_EXSIST =  new CodeMsg(500104,"不存在离线session数据");
  13. public static CodeMsg NOT_FIND_DATA = new CodeMsg(500105,"查找不到对应数据");
  14. private CodeMsg(int retCode, String message) {
  15. this.retCode = retCode;
  16. this.message = message;
  17. }
  18. public int getRetCode() {
  19. return retCode;
  20. }
  21. public String getMessage() {
  22. return message;
  23. }
  24. public void setMessage(String message) {
  25. this.message = message;
  26. }
  27. }
public class CodeMsg {
private int retCode;
private String message;
// 按照模块定义CodeMsg
// 通用异常
public static CodeMsg SUCCESS = new CodeMsg(0,"success");
public static CodeMsg SERVER_EXCEPTION = new CodeMsg(500100,"服务端异常");
public static CodeMsg PARAMETER_ISNULL = new CodeMsg(500101,"输入参数为空");
// 业务异常
public static CodeMsg USER_NOT_EXSIST = new CodeMsg(500102,"用户不存在");
public static CodeMsg ONLINE_USER_OVER = new CodeMsg(500103,"在线用户数超出允许登录的最大用户限制。");
public static CodeMsg SESSION_NOT_EXSIST = new CodeMsg(500104,"不存在离线session数据");
public static CodeMsg NOT_FIND_DATA = new CodeMsg(500105,"查找不到对应数据");
private CodeMsg(int retCode, String message) {
this.retCode = retCode;
this.message = message;
}
public int getRetCode() {
return retCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

}

2、返回结果集封装:Result.java

  1. public class Result<T> {
  2. private String message;
  3. private int retCode;
  4. private T data;
  5. private Result(T data) {
  6. this.retCode = 0;
  7. this.message = "成功";
  8. this.data = data;
  9. }
  10. private Result(CodeMsg cm) {
  11. if(cm == null){
  12. return;
  13. }
  14. this.retCode = cm.getRetCode();
  15. this.message = cm.getMessage();
  16. }
  17. /**
  18. * 成功时候的调用
  19. * @return
  20. */
  21. public static <T> Result<T> success(T data){
  22. return new Result<T>(data);
  23. }
  24. /**
  25. * 成功,不需要传入参数
  26. * @return
  27. */
  28. @SuppressWarnings("unchecked")
  29. public static <T> Result<T> success(){
  30. return (Result<T>) success("");
  31. }
  32. /**
  33. * 失败时候的调用
  34. * @return
  35. */
  36. public static <T> Result<T> error(CodeMsg cm){
  37. return new Result<T>(cm);
  38. }
  39. /**
  40. * 失败时候的调用,扩展消息参数
  41. * @param cm
  42. * @param msg
  43. * @return
  44. */
  45. public static <T> Result<T> error(CodeMsg cm,String msg){
  46. cm.setMessage(cm.getMessage()+"--"+msg);
  47. return new Result<T>(cm);
  48. }
  49. public T getData() {
  50. return data;
  51. }
  52. public String getMessage() {
  53. return message;
  54. }
  55. public int getRetCode() {
  56. return retCode;
  57. }
  58. }
public class Result<T> {
private String message;
private int retCode;
private T data;
private Result(T data) {
this.retCode = 0;
this.message = "成功";
this.data = data;
}
private Result(CodeMsg cm) {
if(cm == null){
return;
}
this.retCode = cm.getRetCode();
this.message = cm.getMessage();
}
/**
* 成功时候的调用
* @return
*/
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
/**
* 成功,不需要传入参数
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Result<T> success(){
return (Result<T>) success("");
}
/**
* 失败时候的调用
* @return
*/
public static <T> Result<T> error(CodeMsg cm){
return new Result<T>(cm);
}
/**
* 失败时候的调用,扩展消息参数
* @param cm
* @param msg
* @return
*/
public static <T> Result<T> error(CodeMsg cm,String msg){
cm.setMessage(cm.getMessage()+"--"+msg);
return new Result<T>(cm);
}
public T getData() {
return data;
}
public String getMessage() {
return message;
}
public int getRetCode() {
return retCode;
}
}

3、返回结果使用:

  1. Map<String, Object> dataMap = new HashMap<String, Object>();
  2. dataMap.put("data", data);
  3. dataMap.put("userid", userid);
  4. result = Result.success(dataMap);// 成功,并返回数据和retCode和message
  5. // result = Result.success();// 成功,不返回数据,只返回retCode和message
  6. // result = Result.error(CodeMsg.SERVER_EXCEPTION);// 失败返回错误信息
  7. // result = Result.error(CodeMsg.SERVER_EXCEPTION,e.toString());// 失败返回错误+扩展错误信息
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("data", data);
dataMap.put("userid", userid); result = Result.success(dataMap);// 成功,并返回数据和retCode和message // result = Result.success();// 成功,不返回数据,只返回retCode和message // result = Result.error(CodeMsg.SERVER_EXCEPTION);// 失败返回错误信息 // result = Result.error(CodeMsg.SERVER_EXCEPTION,e.toString());// 失败返回错误+扩展错误信息

2018-05-15更新

日常开发中,将系统的返回msg可以封装成枚举(Emun)类型来处理。

java返回结果集封装的更多相关文章

  1. 自己写的java返回结果集封装

    import java.io.Serializable; import com.fasterxml.jackson.core.JsonProcessingException; import com.f ...

  2. java servlet调用带有多个返回结果集的存储过程

    一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...

  3. 利用java反射将结果集封装成为对象和对象集合

    java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属 ...

  4. 直接返回list不封装的结果集

    直接返回list不封装的结果集,在Jsp访问方式: 1.封装成map访问 2.用jstl: <c:forEach var="images" items="${lis ...

  5. Java 调用存储过程 返回结果集

    这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...

  6. java系列-JDBC的封装

    参考:http://blog.csdn.net/liuhenghui5201/article/details/16369773 一. 1.加载驱动-->>封装    --->> ...

  7. Mybatis之是如何执行你的SQL的(SQL执行过程,参数解析过程,结果集封装过程)

    Myabtis的SQL的执行是通过SqlSession.默认的实现类是DefalutSqlSession.通过源码可以发现,selectOne最终会调用selectList这个方法. @Overrid ...

  8. Dapper完美兼容Oracle,执行存储过程,并返回结果集。

    Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...

  9. MyBatis调用存储过程,含有返回结果集、return参数和output参数

    Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...

随机推荐

  1. jmeter是什么

    Apache JMeter 是Apache 组织开发的基于 Java 的压力测试工具: 适用的测试领域:地方 用于对软件做压力测试,它可以用于测试静态和动态资源,例如:静态文件,Java 小程序.CG ...

  2. tp5 报 A non well formed numeric value encountered 的错解决办法

    thinkphp5出现A non well formed numeric value encountered的解决办法修改formatDateTime方法如下 默认值: if (is_null($th ...

  3. Theano入门——CIFAR-10和CIFAR-100数据集

    Theano入门——CIFAR-10和CIFAR-100数据集 1.CIFAR-10数据集介绍 CIFAR-10数据集包含60000个32*32的彩色图像,共有10类.有50000个训练图像和1000 ...

  4. mysqldump与mydumper

    mydumper -u root -S /srv/my3308/run/mysql.sock -B trade_platform -o /data/trade_platform

  5. spring JdbcTemplate在spring的ioc中使用

    package com.com.jdbctemplate; import org.springframework.context.ApplicationContext; import org.spri ...

  6. java-多线程安全-锁

    一 同步函数 1.1 一般的方法 同步的另一种体现形式:同步函数. 同步函数使用的锁是哪个?经过分析:大概猜的是this,因为函数必须被对象调用. 验证:写一个同步代码块,写一个同步函数,如果同步代码 ...

  7. HR招聘_(十)_招聘方法论(供应商管理)

    招聘和供应商长期合作,所以供应商管理也至关重要.供应商一般分为猎头,渠道,外包三类. 猎头 高端职位,高难度职位,急需职位和量大职位会和猎头公司合作共同完成招聘任务,猎头公司一般会有两种服务,猎头和R ...

  8. Wndows下Apache+php+Mysql环境的搭建及其涉及的知识

    一.安装Apache 1. 在网上搜索以下3个文件,以及找一个地方新建一个文件夹 好吧,这里有下载链接:http://pan.baidu.com/s/1hr9IdSS 文件夹内有:apache,mys ...

  9. iOS项目转移到自动引用计数

    这里主要参考了Apple官方文档:Transitioning to ARC Release Notes 在支持iOS5的Xcode4中,创建项目会看到这样的选项: 这是iOS5的新特性,自动对象引用计 ...

  10. 【JZOJ3296】【SDOI2013】刺客信条(assassin)

    ╰( ̄▽ ̄)╭ Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客.最终,凭借着他的努力和出众的天赋 ...