文档章节

数据请求设计

晴雨夜
 晴雨夜
发布于 2017/12/14 17:49
字数 388
阅读 44
收藏 0
  •  先上图

  •   基于Restful模式,目前单次数据请求考虑解决两个问题
    • 用户验证
    • 分页处理
  • 用户权限认证由TokenInterceptor拦截,用户登陆后后台返回一串密钥,这个密钥由JavaJsonWebToken生成,密钥由生成时间、用户名、权限等组成。客户发送请求必须携带密钥,通过密钥过滤接口的访问权限
  • 系统使用Mybatis作为持久层框架,之前分页参数都是int start,int end,String order,String sort。比较原始且不方便,所以考虑在此基础封装一层方便使用。在设计时希望Controller可以直接接受到分页对象、并且根据实际数据库的不同给予不同的封装。(这个还没完成)
  • 因此在使用了装饰模式,定义了Pagination接口,抽象类AbastractPagination,与三个实现类OraclePagination,MySqlPagination,SqlServerPagination
  • 实现HanlderMethodArgumentResolver,重写supportsParamter、resolveArgument实现分页对象的传递
  • PaginationResolver
    /**
     * 分页参数解析器
     * @author shadow
     * @create 2017-12-14
     * {@link}
     */
    public class PaginationResolver implements HandlerMethodArgumentResolver {
    
    	/**
    	 * 分页接口的实现类 默认为Oracle分页
    	 */
    	private Class<? extends Pagination> paginationType = OraclePagination.class;
    
    	/**
    	 * 
    	 * 判断参数是否为 {@link Pagination}的实现类
    	 */
    	@Override
    	public boolean supportsParameter(MethodParameter parameter) {
    		return parameter.getParameterType() == Pagination.class;
    	}
    
    	/**
    	 * TODO 待优化 根据实际数据库类型自动映射
    	 * 根据数据库类型给予正确的分页参数
    	 */
    	@Override
    	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
    			NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
    		HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
    		Pagination page = (Pagination) ObjectUtils.setPoperties(paginationType, request, null);
    		page.init();
    		return page;
    	}
    
    	public Class<? extends Pagination> getPaginationType() {
    		return paginationType;
    	}
    
    	public void setPaginationType(Class<? extends Pagination> paginationType) {
    		this.paginationType = paginationType;
    	}
    }
    

 

© 著作权归作者所有

共有 人打赏支持
晴雨夜
粉丝 0
博文 5
码字总数 3562
作品 0
杨浦
程序员
私信 提问
一种NVMe SSD友好的数据存储系统设计

闪存介质的大规模使用给传统存储系统的设计带来了强烈的冲击,传统存储系统的很多设计理念不再适用于闪存存储系统。传统存储在设计过程中紧紧围绕磁盘抖动问题,所以在数据布局方面会适应磁盘...

wuzhongjie
2016/10/08
0
0
Okhttp3网络请求框架简析思考——Android网络请求框架(五)

站在世界的巅峰看世界的心情,决不是一个普通人能够体会的到的感觉 1、对单例设计模式的思考 创建方式一 、 创建方式 二 创建方式三: 分析 简述: 1-1、可以看到上面三种创建单例的方法,第...

赵子龙
2016/09/13
646
0
服务高可用:幂等性设计

QQ用得起来越少了,现在就加入300+技术微信群,公众号回复"微信群"即可加入。 什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就...

架构之路
2017/12/07
0
0
基于Django实现 RESTful API 之RestFramework框架

一、首先什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在...

SlashBoyMr_wang
09/17
0
0
spymemcached源码中Reactor模式分析

简介 spymemcached 是一个 memcached 的客户端, 使用 NIO 实现。采用Reactor模式实现,单线程,高性能Memcached客户端。 spymemcached源码分析:http://my.oschina.net/astute/blog/93492 R...

yychaov5
2013/01/04
0
3

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部