很多项目在开发的时候都会遇到分页的问题,一般分页主要用到两个参数page和limit,page是第几页,limit是请求多少条数据。而一般在请求数据库的时候我们用不到page参数,用到的是用page和limit计算出来的index参数。index的计算方法为 index=(page-1)*limit;。如果在搭建的框架没有任何措施的时候,那么page和limit参数需要我们手动写代码去判断其是否合法(page和limit必须大于0),并且index需要我们自己去计算。这时我们就可以自定义一个参数解析器,在请求接口之前让框架帮我们完成判断和计算的任务,我们只需要写一个注解即可。
自定义分页注解
这个注解用在controller的page参数上,下方会有示例。
自定义参数解析器
如何封装请求参数,都可以这个解析器中按照我们的意愿完成,前提是controller的参数上必须携带Page注解。
封装分页参数PageParam类
自定义异常类
最后完成配置自定义参数解析器
测试
上述配置完成以后 写一个测试的方法:注意参数加了@Page注解
正常请求时,如:…/test?page=2&limit=10 打印如下:PageParam [page=2, limit=10, index=10]并且正常返回数据,当缺失某个参数的时候如:…/test?page=2,就会报如下错误:
这样返回错误信息似乎不太雅观。接下来就写一个配置,如果出现PageException异常的时候,将其拦截,并且返回json格式的提示,配置如下。
这样再报错的时候就会返回json数据:
经过上述配置以后,再写分页接口的时候,只需要在controller中加 @Page PageParam page即可,参数的判断和计算都由框架完成。