java链式操作

vo层:

package com.wgc.todo.vo;

import com.github.pagehelper.Page;

//T是 模板 替换,编译期擦除
// new ResultVO<String>(); // java javac 编译
// new ResultVO<Student>();
/*定义这个类的作用是,
* 在是try{
* }catch(Exception ex){
*   return null; //不能这样写,如果数据库内没有数据返回的是一个null
*   //那我们这里写,返回的null就不知道是报错,还是没数据也报错,表达的意思不明确
*   //后来经过修改,人们想到在服务器与客无端交互是加一层,就是vo层的出现
*   //vo层是为了明确的指出返回的结果是否是正确性,并于返回更多的信息到客无端,
*   //让客无端明白是否成功或报错
* }
* Http协议中,返回状态码
* 1开头表示:信息错误
* 如:
* 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
* 2开头表示: 发送请求成功,并返回数据
* 3开头表示:url转发
* 4开头表示:客无端错误
* 5开头表示:服务器错误
* */
public class ResultVO<T> {
    private int code;
    private T data;
    private Page<T> page;
    private String error;
    private Throwable throwable;


    public int getCode() {
        return code;
    }

    public ResultVO<T> setCode(int code) {
        this.code = code;
        //返回自身就可以形成链式操作
        return this;
    }

    public T getData() {
        return data;
    }

    public ResultVO<T> setData(T data) {
        this.data = data;
        return this;
    }

    public Page<T> getPage() {
        return page;
    }

    public ResultVO<T> setPage(Page page) {
        this.page = page;
        return this;
    }

    public String getError() {
        return error;
    }

    public ResultVO<T> setError(String error) {
        this.error = error;
        return this;
    }

    public Throwable getThrowable() {
        return throwable;

    }

    public ResultVO<T> setThrowable(Throwable throwable) {
        this.throwable = throwable;
        return this;
    }
}

Controller层:

 @RequestMapping(value = "/all", method = RequestMethod.GET)
    public ResultVO selectAll() {
       // ResultVO restVO = new ResultVO<>();
        ResultVO restVO = new ResultVO<>();
        try {
            restVO.setCode(200);
            restVO.setData(service.selectAll());
            return restVO;
        } catch (DatabaseException e) {
            /*不使用链式,可以精确的定位的错误信息。
            * */
           restVO.setCode(205);
           restVO.setError("这是一个错误");
           return restVO;
        } catch (Exception e) {
            /*链式操作*/
            /*缺点: 1、调式的时候不凡便
             *  2、找错误不能精确的定位到错误的位置
             *  3、链式的操作写起来简单了,但vo层再起来又变麻烦了,所以事情都有两面性的,
             *  只是牺牲一面,成全另别面
             * */
            restVO.setCode(225).setError("这是一个错误");
            return restVO;
        }

    }
原文地址:https://www.cnblogs.com/YouAreABug/p/10071183.html