本博客部分内容建立在上篇博客基础之上springboot干货——(十四【一】)整合mongodb

1.项目结构



2.新建分页模型PageModel类

package com.gwd.model;

import java.io.Serializable;
import org.springframework.data.domain.Sort;

/** 
* @FileName PageModel.java
* @Description:分页模型
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 下午3:39:35 
* 修改历史:
* 时间           作者          版本        描述
*====================================================  
*/
public class PageModel implements Serializable{
	/**  
	 * @Fields: serialVersionUID 
	 * @Todo: TODO 
	 */ 
	private static final long serialVersionUID = 1L;
	// 当前页
    private Integer pagenumber = 1;
    // 当前页面条数
    private Integer pagesize = 10;
    // 排序条件
    private Sort sort;
	public Integer getPagenumber() {
		return pagenumber;
	}
	public void setPagenumber(Integer pagenumber) {
		this.pagenumber = pagenumber;
	}
	public Integer getPagesize() {
		return pagesize;
	}
	public void setPagesize(Integer pagesize) {
		this.pagesize = pagesize;
	}
	public Sort getSort() {
		return sort;
	}
	public void setSort(Sort sort) {
		this.sort = sort;
	}
}



3.新建分页公共类SpringbootPageable,实现 Pageable 接口

引入分页基础模型pageModel

package com.gwd.service.impl;

import java.io.Serializable;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import com.gwd.model.PageModel;
/** 
* @FileName SpringDataPageable.java
* @Description:分页公共类
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:23:03 
* 修改历史:
* 时间           作者          版本        描述
*====================================================  
*/
public class SpringbootPageable implements Serializable,Pageable{
	/**  
	 * @Fields: serialVersionUID 
	 * @Todo: TODO 
	 */ 
	private static final long serialVersionUID = 1L;
	
	PageModel page;
	
	public PageModel getPage() {
		return page;
	}

	public void setPage(PageModel page) {
		this.page = page;
	}

	@Override
	public Pageable first() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getOffset() {
		// TODO Auto-generated method stub
		return (page.getPagenumber() - 1) * page.getPagesize();
	}

	@Override
	public int getPageNumber() {
		// TODO Auto-generated method stub
		return page.getPagenumber();
	}

	@Override
	public int getPageSize() {
		// TODO Auto-generated method stub
		return page.getPagesize();
	}


	@Override
	public boolean hasPrevious() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Pageable next() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Pageable previousOrFirst() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Sort getSort() {
		// TODO Auto-generated method stub
		return page.getSort();
	}
}




4.服务层接口及实现类

package com.gwd.service;

import org.springframework.data.domain.Page;

import com.gwd.model.User;

/** 
* @FileName UserSevice.java
* @Description:TODO
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:28:08 
* 修改历史:
* 时间           作者          版本        描述
*====================================================  
*
*/
public interface UserSevice {
	public Page<User> paginationQuery(Integer pageNum);
}


package com.gwd.service.impl;

import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import com.gwd.model.PageModel;
import com.gwd.model.User;
import com.gwd.service.UserSevice;
/** 
* @FileName UserServiceImpl.java
* @Description:TODO
* @author JackHisen(gu.weidong)
* @version V1.0
* @createtime 2018年3月15日 上午11:29:23 
* 修改历史:
* 时间           作者          版本        描述
*====================================================  
*/
@Service
public class UserServiceImpl implements UserSevice{
	@Autowired
	private MongoTemplate mongoTemplate;
	@Override
	public Page<User> paginationQuery(Integer pageNum) {
		SpringbootPageable pageable = new SpringbootPageable();
		PageModel pm=new PageModel();
	    Query query = new Query();
	    List<Order> orders = new ArrayList<Order>();  //排序
	    orders.add(new Order(Direction.DESC, "age"));
	    Sort sort = new Sort(orders);
	    // 开始页
	    pm.setPagenumber(pageNum);
	    // 每页条数
	    pm.setPagesize(5);
	    // 排序
	    pm.setSort(sort);
	    pageable.setPage(pm);
	 // 查询出一共的条数
	    Long count = mongoTemplate.count(query, User.class);
	    // 查询
	    List<User> list = mongoTemplate.find(query.with(pageable), User.class);
	    // 将集合与分页结果封装
	    Page<User> pagelist = new PageImpl<User>(list, pageable, count);
		return pagelist;
	}
}



测试:

@RequestMapping("/testMongoTemplate")
	@ResponseBody
	public String testMongoTemplate() {
		int i=100;
		long j=0L;
		while(i>0) {
			mongoTemplate.save(new User(i-j, "gwd", i));
			i--;	
		}
		Page<User> paginationQuery = userService.paginationQuery(2);
		for(User u:paginationQuery) {
			System.out.println(u.getAge());
		}
		return null;
	}


条件查询如下:

Query query=new Query(Criteria.where("username").is("mama"));
		List<User> find = mongoTemplate.find(query, User.class);




Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐