java实现自定义分页标签_Spring 自定义注解分页实现

1.首先自定义注解类

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.PARAMETER)

@Retention(RetentionPolicy.RUNTIME)

public @interface PageSolver {

}

2.分页PageInfo类

import java.util.List;

public class Page{

//每页个数

private int pageSize = 15;

//数据集合

private List results ;

//总数

private int total;

//现在页码

private int page = 1;

//分页查询开始位置

private int begin;

//分页查询结束位置

private int end;

private Object paras;

private Object rows;

public Page() {

}

public Page(Integer begin,Integer pageSize){

this.begin = begin;

this.pageSize = pageSize;

this.end = this.begin + this.pageSize;

this.page = (int) Math.floor((this.begin * 1.0d) / this.pageSize) + 1;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

this.end = this.begin + this.pageSize;

if (this.begin != 0) {

this.page = (int) Math.floor((this.begin * 1.0d) / this.pageSize) + 1;

}

}

public List getResults() {

return results;

}

public void setResults(List results) {

this.results = results;

}

public int getTotal() {

if (this.total == 0) {

return 1;

}

return this.total;

}

public void setTotal(int total) {

this.total = total;

}

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

this.begin = (this.page-1) * this.pageSize;

this.end = this.pageSize;

}

public int getBegin() {

return begin;

}

public void setBegin(int begin) {

this.begin = begin;

if (this.pageSize != 0) {

this.page = (int) Math.floor((this.begin * 1.0d) / this.pageSize) + 1;

}

}

public int getEnd() {

if(this.end==0)

this.end = this.pageSize;

return end;

}

public void setEnd(int end) {

this.end = end;

}

public Object getParas() {

return paras;

}

public void setParas(Object paras) {

this.paras = paras;

}

public Object getRows() {

return rows;

}

public void setRows(Object rows) {

this.rows = rows;

}

}

3.在实现HandlerMethodArgumentResolver接口自定参数解析器

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;

import org.springframework.core.MethodParameter;

import org.springframework.web.bind.support.WebDataBinderFactory;

import org.springframework.web.context.request.NativeWebRequest;

import org.springframework.web.method.support.HandlerMethodArgumentResolver;

import org.springframework.web.method.support.ModelAndViewContainer;

import com.cn.annotation.PageSolver;

import com.cn.base.page.Page;

public class PageArgumentResolver implements HandlerMethodArgumentResolver{

@Override

public boolean supportsParameter(MethodParameter parameter) {

return null != parameter.getParameterAnnotation(PageSolver.class);

}

@Override

public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,

NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {

HttpServletRequest req = webRequest.getNativeRequest(HttpServletRequest.class);

Page> page = new Page<>();

// 页码

if (StringUtils.isNotBlank(req.getParameter("page"))) {

int current = Integer.parseInt(req.getParameter("page"));

page.setPage(current);

}

//页数

if(StringUtils.isNotBlank(req.getParameter("rows"))){

int length = Integer.parseInt(req.getParameter("rows"));

page.setPageSize(length);

}

return page;

}

}

3.在springmvc.xml中添加

4.在controller类中使用

@RequestMapping("/list")

@ResponseBody

public Page list(Model model,@PageSolver Page page,User user){

return userService.selectPageByColumn(page, user);

}

5.在service中实现

import com.cn.base.BaseService;

import com.cn.hnust.pojo.User;

public interface UserService extends BaseService{

}

6.在serviceimpl中实现

import org.springframework.stereotype.Service;

import com.cn.base.BaseServiceImpl;

import com.cn.hnust.pojo.User;

import com.cn.hnust.service.UserService;

@Service

public class UserServiceImpl extends BaseServiceImpl implements UserService {

}

7.在mapper中实现

import com.cn.base.BaseMapper;

import com.cn.hnust.pojo.User;

/**

* UserMapper

* @author system

* @date 2018-03-30 16:30:38

* @company test

*/

public interface UserMapper extends BaseMapper {

}

8.在BaseService中实现

public interface BaseService {

Page selectPageByColumn(Page page,T column);

List selectAllByColumn(T column);

T selectOneByColumn(T column);

int selectCountByColumn(T column);

int insertByColumn(T column);

int deleteByKeys(String[] keys);

int deleteByColumn(T column);

int updateByColumn(T column);

}

9.在BaseServiceimpl中实现

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.cn.base.page.Page;

public class BaseServiceImpl implements BaseService {

@Autowired

BaseMapper baseMapper;

@Override

public Page selectPageByColumn(Page page, T column) {

int count = baseMapper.selectCountByColumn(column);

if(count > 0){

if (page == null){

page = new Page();

}else{

if (page.getPage() * page.getPageSize() > count && Math.ceil(Double.valueOf(count) / Double.valueOf(page.getPageSize())) != page.getPage()) {

page.setPage(1);

}

}

page.setTotal(count);

page.setRows(baseMapper.selectPageByColumn(page, column));

page.setParas(column);

return page;

}

return null;

}

@Override

public List selectAllByColumn(T column) {

return baseMapper.selectAllByColumn(column);

}

@Override

public T selectOneByColumn(T column) {

return baseMapper.selectOneByColumn(column);

}

@Override

public int selectCountByColumn(T column) {

return baseMapper.selectCountByColumn(column);

}

@Override

public int insertByColumn(T column) {

return baseMapper.insertByColumn(column);

}

@Override

public int deleteByKeys(String[] keys) {

return baseMapper.deleteByKeys(keys);

}

@Override

public int deleteByColumn(T column) {

return baseMapper.deleteByColumn(column);

}

@Override

public int updateByColumn(T column) {

return baseMapper.deleteByColumn(column);

}

}

10.在Basemaper中实现

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cn.base.page.Page;

public interface BaseMapper{

List selectPageByColumn(@Param("page")Page page, @Param("column")Object column);

List selectAllByColumn(@Param("column")T column);

T selectOneByColumn(@Param("column")T column);

int selectCountByColumn(@Param("column")T column);

int insertByColumn(T column);

int deleteByKeys(String[] keys);

int deleteByColumn(@Param("column")T column);

int updateByColumn(T column);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值