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 ...
 
随机推荐
- springmvc:配置解决中文乱码的过滤器
			
在web.xml中配置以下内容: <!--配置解决中文乱码过滤器--> <filter> <filter-name>characterEncodingFilter& ...
 - Leetcode109. Convert Sorted List to Binary Search Tree有序链表转换二叉搜索树
			
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定的有序链表: [-10 ...
 - getBoundingClientRect介绍
			
getBoundingClientRect用于获取元素相对与浏览器视口的位置 由于getBoundingClientRect()已经是w3c标准,所以不用担心兼容,不过在ie下还是有所区别 { top ...
 - Odoo 在 Ubuntu 环境下性能调优
			
一.首先我们要分析影响odoo 服务器 性能的因素 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能. 在linux系统 ...
 - mac 安装svn
			
别人说用Xcode装,我也不知道我这个是不是用Xcode装的 在命令行界面输入 sudo bash svn --version 会出现一大段介绍,关于xcode的,我也不懂,一只敲空格键到最后,然后输 ...
 - Hackerrank--Divisibility of Power(Math)
			
题目链接 You are given an array A of size N. You are asked to answer Q queries. Each query is of the for ...
 - mybatis深入理解(五)-----MyBatis的一级缓存实现详解 及使用注意事项
			
0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上.MyBatis提供了一级缓存.二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高 ...
 - 洛谷 P1951 收费站_NOI导刊2009提高(2) 最短路+二分
			
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例: 输出样例: 说明 思路 AC代码 总结 题面 题目链接 P1951 收费站_NOI导刊2009提高(2) 其 ...
 - Adding basic files · lcobucci/jwt@aad22ed · GitHub
			
Skip to content Features Business Explore Marketplace Pricing This repository Sign in or Sign up ...
 - JavaScript文件与HTML文件本地连接
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...