有关pageHelper开源代码的使用。

依赖注入,拦截@LIst注解类的实现:

package com.yumu.airshow.Config;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yumu.airshow.Annotation.*;
import com.yumu.airshow.Model.Page;
import com.yumu.airshow.Utils.ResultUtil;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


/**
 * Created by qa on 19/5/7.
 */



@Component
@Aspect
public class ParamValidAspect {

    @Before("@annotation(paramValid)")
    public void aroundObject(JoinPoint proceedingJoinPoint , ParamValid paramValid) throws Throwable {
        Object[] args = proceedingJoinPoint.getArgs();

        for (Object argItem : args) {

            if (argItem instanceof BindingResult) {//前置验证
                BindingResult result = (BindingResult) argItem;
                String errorMap = this.validRequestParams(result);
                if (errorMap != null) {
                    throw new ValidException(errorMap);
                }
            }
        }


    }

    @Around("@annotation(ymInsert)")
    public Object aroundObject(ProceedingJoinPoint proceedingJoinPoint , YmInsert ymInsert) throws Throwable {
        return this.around(proceedingJoinPoint,"ymInsert");

    }

    @Around("@annotation(ymUpdate)")
    public Object aroundObject(ProceedingJoinPoint proceedingJoinPoint , YmUpdate ymUpdate) throws Throwable {
        return this.around(proceedingJoinPoint,"ymUpdate");

    }

    @Around("@annotation(ymDelete)")
    public Object aroundObject(ProceedingJoinPoint proceedingJoinPoint , YmDelete ymDelete) throws Throwable {
        return this.around(proceedingJoinPoint,"ymDelete");

    }

    @Around("@annotation(ymDetail)")
    public Object aroundObject(ProceedingJoinPoint proceedingJoinPoint , YmDetail ymDetail) throws Throwable {
        return this.around(proceedingJoinPoint,"ymDetail");

    }

    @Around("@annotation(ymObject)")
    public Object aroundObject(ProceedingJoinPoint proceedingJoinPoint , YmObject ymObject) throws Throwable {
        return this.around(proceedingJoinPoint,"ymObject");



    }

    @Around("@annotation(ymList)")
    public <T>Object aroundList(ProceedingJoinPoint proceedingJoinPoint , YmList ymList) throws Throwable {
        return this.around(proceedingJoinPoint,"ymList");

    }

    public <T>Object around(ProceedingJoinPoint proceedingJoinPoint , String option) throws Throwable {
        Object[] args = proceedingJoinPoint.getArgs();
        Page page=null;
        for (Object argItem : args) {
            System.out.println("argItem:"+argItem);
            if (argItem instanceof Page) {//分页设置
                page = (Page) argItem;

                System.out.println("getPage_num:"+page.getPage_num()+",getPage_size:"+page.getPage_size());

                if(!page.getSort().equals(""))
                    PageHelper.startPage(page.getPage_num(), page.getPage_size(), page.getSort());
                else
                    PageHelper.startPage(page.getPage_num(), page.getPage_size());
            }
            if (argItem instanceof BindingResult) {//前置验证
                BindingResult result = (BindingResult) argItem;
                String errorMap = this.validRequestParams(result);
                if (errorMap != null) {
                    return ResultUtil.errorValidated(errorMap);
                }
            }
        }

        if(option.equals("ymList")){
            List<T> reuslt = new ArrayList<T>();
            try {
                reuslt = (List<T>) proceedingJoinPoint.proceed();
            } catch (Exception e) {
                throw new RuntimeException("返回类型不为List:"+ e.getMessage());
            }
            PageInfo<T> pageList = new PageInfo<T>(reuslt);
            return ResultUtil.successList(pageList);
        }

        Object reuslt = null;
        try {
            reuslt = (Object) proceedingJoinPoint.proceed();
        } catch (Exception e) {
            throw new RuntimeException("返回类型不为Object:"+ e.getMessage());
        }

        System.out.println(reuslt);

        int _reuslt_code=-1;
        String _reuslt__errorMsg="";
        String _reuslt_Msg="";
        if (reuslt instanceof Integer) {
            _reuslt_code=((Integer) reuslt).intValue();

        }
        if (reuslt instanceof String) {
            _reuslt__errorMsg=reuslt.toString();
        }
        if (reuslt instanceof HashMap) {
            try {
                _reuslt_code = Integer.parseInt(((HashMap) reuslt).get("code").toString());
            }catch (Exception e){e.printStackTrace();}
            try {
                Object msg = ((HashMap) reuslt).get("msg");
                if(msg != null){
                    if(_reuslt_code>0)
                        _reuslt_Msg=msg.toString();
                    else
                        _reuslt__errorMsg = msg.toString();
                }
            }catch (Exception e){e.printStackTrace();}

        }

        if(option.equals("ymDetail"))return ResultUtil.successDetail(reuslt);
        if(option.equals("ymObject")){
            if(_reuslt_code==0 || !_reuslt__errorMsg.equals("")) {
                if(!_reuslt__errorMsg.equals(""))
                    return ResultUtil.failDelete(reuslt,_reuslt__errorMsg);
                else
                    return ResultUtil.failDelete(reuslt);
            }else{
                if(!_reuslt_Msg.equals(""))
                    return ResultUtil.successObject(reuslt,_reuslt_Msg);
                else
                    return ResultUtil.successObject(reuslt);
            }
        }
        if(option.equals("ymDelete")){
            if(_reuslt_code==0 || !_reuslt__errorMsg.equals("")) {
                if(!_reuslt__errorMsg.equals(""))
                    return ResultUtil.failDelete(reuslt,_reuslt__errorMsg);
                else
                    return ResultUtil.failDelete(reuslt);
            }else{
                if(!_reuslt_Msg.equals(""))
                    return ResultUtil.successObject(reuslt,_reuslt_Msg);
                else
                    return ResultUtil.successDelete(reuslt);
            }
        }
        if(option.equals("ymUpdate")){
            if(_reuslt_code==0 || !_reuslt__errorMsg.equals("")) {
                if(!_reuslt__errorMsg.equals(""))
                    return ResultUtil.failUpdate(reuslt,_reuslt__errorMsg);
                else
                    return ResultUtil.failUpdate(reuslt);
            }else{
                if(!_reuslt_Msg.equals(""))
                    return ResultUtil.successObject(reuslt,_reuslt_Msg);
                else
                    return ResultUtil.successUpdate(reuslt);
            }
        }
        if(option.equals("ymInsert")){
            if(_reuslt_code==0 || !_reuslt__errorMsg.equals("")) {
                if(!_reuslt__errorMsg.equals(""))
                    return ResultUtil.failInsert(reuslt,_reuslt__errorMsg);
                else
                    return ResultUtil.failInsert(reuslt);
            }else{
                if(!_reuslt_Msg.equals(""))
                    return ResultUtil.successObject(reuslt,_reuslt_Msg);
                else
                    return ResultUtil.successInsert(reuslt);
            }
        }

        return ResultUtil.errorException(reuslt);
    }

    /**
     * 校验
     */
    private String validRequestParams(BindingResult result) {
        if(result.hasErrors()) {
            List<ObjectError> list = result.getAllErrors();
            String errorMsg="";
            for (int i = 0; i < list.size(); i++) {
                FieldError error = (FieldError) list.get(i);
                errorMsg += error.getField() + error.getDefaultMessage() + ";";

            }
            return errorMsg;
        }

        return null;
    }


}

  

配置pageHelper的相关属性类:
package com.yumu.airshow.Config;

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.Properties;

@Configuration
public class PageHelperConfig {



	@Bean
    public PageHelper pageHelper() {
		System.out.println("MyBatisConfiguration.pageHelper()");
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }

}

  请求结果重装工具类的实现:

package com.yumu.airshow.Utils;

import com.github.pagehelper.PageInfo;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * Created by qa on 19/5/5.
 */


public class ResultUtil {

/*错误代码一览表
200: '服务器成功返回请求的数据。',//detail---200,no content data={},list---200, no content data=[]
201: '新建或修改数据成功。',//ok
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',//ok
crud出错:


服务器内部错误:500
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。鉴权 ',
402: 数据格式:
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
407: '手机号码已经存在。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
434: 插入数据失败
434: delete error
435: update error
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
*/


    public static Object successInsert(Object object){
        HashMap json=new HashMap();
        json.put("msg","新增成功!");
        json.put("code",200);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }

    public static Object  failInsert(Object object){
        return failInsert(object,"新增失败!");
    }
    public static Object  failInsert(Object object, String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",434);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }

    public static Object successUpdate(Object object){
        HashMap json=new HashMap();
        json.put("msg","更新成功!");
        json.put("code",200);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }
    public static Object  failUpdate(Object object){
        return failUpdate(object,"更新失败!");
    }
    public static Object  failUpdate(Object object, String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",435);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }
    public static Object successDelete(Object object){
        HashMap json=new HashMap();
        json.put("msg","删除成功!");
        json.put("code",200);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }
    public static Object  failDelete(Object object){
        return failDelete(object,"删除失败!");
    }
    public static Object  failDelete(Object object,String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",434);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }
    public static Object successDetail(Object object){
        HashMap json=new HashMap();
        json.put("msg","获取详情成功!");
        json.put("code",200);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }

    public static Object  successObject(Object object){
        return failDelete(object,"成功!");
    }
    public static Object successObject(Object object,String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",200);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }

    public static Object  failObject(Object object){
        return failDelete(object,"失败!");
    }
    public static Object failObject(Object object,String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",403);
        if(object==null)
            json.put("data",new HashMap());
        else
            json.put("data",object);
        return json;
    }
    public static Object successList(PageInfo objectPage){
        HashMap json=new HashMap();
        json.put("msg","获取列表成功!");
        json.put("code",200);

        if(objectPage!=null){
            HashMap page=new HashMap();
            page.put("count_page", objectPage.getPages());
            page.put("count_size", objectPage.getTotal());
            page.put("current_page", objectPage.getPageNum());

            json.put("data",objectPage.getList());
            json.put("page",page);
        }else{
            json.put("data",new ArrayList());
            json.put("page",new HashMap());
        }
        return json;
    }

    public static Object errorValidated(Object object){
        HashMap json=new HashMap();
        json.put("msg","数据格式错误!");
        json.put("code",402);
        if(object==null)
            json.put("data",new ArrayList());
        else
            json.put("data",object);
        return json;
    }

    public static Object  failAuthenticate(Object object){
        return failDelete(object,"鉴权!");
    }
    public static Object failAuthenticate(Object object,String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",402);
        if(object==null)
            json.put("data",new ArrayList());
        else
            json.put("data",object);
        return json;
    }

    public static Object unLogin(Object object,String errorMsg){
        HashMap json=new HashMap();
        json.put("msg",errorMsg);
        json.put("code",499);
        if(object==null)
            json.put("data",new ArrayList());
        else
            json.put("data",object);
        return json;
    }

    public static HashMap errorService(String msg){
        HashMap json = new HashMap();

        json.put("code",407);
        if(msg.isEmpty()){
            json.put("msg","业务错误!");
        } else {
            json.put("msg", msg);
        }

        return json;
    }

    public static Object errorException(Object object){
        HashMap json=new HashMap();
        json.put("msg","异常抛错!");
        json.put("code",555);
        if(object==null)
            json.put("data",new ArrayList());
        else
            json.put("data",object);
        return json;
    }


}

  

posted on 2019-06-13 22:32  一只愤怒的橘子  阅读(365)  评论(0编辑  收藏  举报

导航