java返回结果集封装
1、返回消息统一定义文件CodeMsg.java
- 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;
- }
- }
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
- 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;
- }
- }
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、返回结果使用:
- 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());// 失败返回错误+扩展错误信息
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返回结果集封装的更多相关文章
- 自己写的java返回结果集封装
import java.io.Serializable; import com.fasterxml.jackson.core.JsonProcessingException; import com.f ...
- java servlet调用带有多个返回结果集的存储过程
一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...
- 利用java反射将结果集封装成为对象和对象集合
java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属 ...
- 直接返回list不封装的结果集
直接返回list不封装的结果集,在Jsp访问方式: 1.封装成map访问 2.用jstl: <c:forEach var="images" items="${lis ...
- Java 调用存储过程 返回结果集
这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...
- java系列-JDBC的封装
参考:http://blog.csdn.net/liuhenghui5201/article/details/16369773 一. 1.加载驱动-->>封装 --->> ...
- Mybatis之是如何执行你的SQL的(SQL执行过程,参数解析过程,结果集封装过程)
Myabtis的SQL的执行是通过SqlSession.默认的实现类是DefalutSqlSession.通过源码可以发现,selectOne最终会调用selectList这个方法. @Overrid ...
- Dapper完美兼容Oracle,执行存储过程,并返回结果集。
Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...
随机推荐
- flex 手册摘要
个人学习 摘抄翻译 http://www.cs.princeton.edu/~appel/modern/c/software/flex/flex.html#SEC1 程序的格式 分成显示的三部分 由% ...
- Django项目:CRM(客户关系管理系统)--21--13PerfectCRM实现King_admin分页页数
{#table_data_list.html#} {## ————————08PerfectCRM实现King_admin显示注册表的字段表头————————#} {% extends 'king_m ...
- Codeforces Round #573 (Div. 2)
A:Tokitsukaze and Enhancement 当时看错条件了..以为A>C>B>D.就胡写了判断条件. #include<bits/stdc++.h> us ...
- 关于网上大量对Vue双向绑定的错误理解
对于Vue的双向绑定,现在基本是个前端都听说过,面试官也喜欢问这个问题.但对于Vue双向绑定的原理,掘金.博客园和segmentfault等技术社区充斥着大量的错误文章.这些文章的题目基本样子如下 “ ...
- Leetcode669.Trim a Binary Search Tree修建二叉树
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R.通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) .你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根 ...
- git命令移动文件夹到另一文件夹
- PHP获取真实客户端的真实IP的方法
REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIENT_IP 是代理服务器发送的HTTP头. ...
- 2018.8.6 模拟赛 提高组B
T1 Description 给定一个n个点m条边的有向图,有k个标记点,要求从规定的起点按任意顺序经过所有标记点到达规定的终点,问最短的距离是多少. Input 第一行5个整数n.m.k.s.t,表 ...
- 解决pycharm新建工程项目都需要重新安装库问题
在新建一个工程项目后,发现之前安装的库均不在了.想要使用的情况下还得重新安装.这样也太不智能了,一定会有解决的办法.查找相关文档后,发现在新建工程项目的时候需要进行选择是否使用以前的环境. 选择已存在 ...
- arcgis几何对象
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...