1.配置yaml文件
mongodb://127.0.0.1:27017/pengyuyan中的pengyuyan是数据库名称
2.分页类SpringDataPageable
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import java.io.Serializable;
public class SpringDataPageable implements Serializable, Pageable {
private static final long serialVersionUID = 1;
// 当前页
private Integer pagenumber = 1;
// 当前页面条数
private Integer pagesize = 1000;
// 排序条件
private Sort sort;
// 当前页面
@Override
public int getPageNumber() {
return getPagenumber();
}
// 每一页显示的条数
@Override
public int getPageSize() {
return getPagesize();
}
// 第二页所需要增加的数量
@Override
public int getOffset() {
return (getPagenumber() - 1) * getPagesize();
}
@Override
public Sort getSort() {
return 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 void setSort(Sort sort) {
this.sort = sort;
}
@Override
public Pageable first() {
return null;
}
@Override
public boolean hasPrevious() {
return false;
}
@Override
public Pageable next() {
return null;
}
@Override
public Pageable previousOrFirst() {
return null;
}
}
3.实体类sysuer
public class sysuser implements Serializable {
private static final long serialVersionUID = -2363456220862690808L;
private String id;
private String username;
private Integer age;
public sysuser(String id, String username, Integer age) {
this.id = id;
this.username = username;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public class UserMapper {
@Autowired
private MongoTemplate mongoTemplate;
public Page<sysuser> findPage(Integer pageNum, Integer pagesize, Query query, Sort sort, Class collections, String collectionName) {
SpringDataPageable pageable = new SpringDataPageable();
// 开始页
pageable.setPagenumber(pageNum);
// 每页条数
pageable.setPagesize(pagesize);
// 排序
pageable.setSort(sort);
// 查询出一共的条数
long count = mongoTemplate.count(query, collections, collectionName);
// 查询
List list = mongoTemplate.find(query.with(pageable), collections,collectionName );
// 将集合与分页结果封装
return new PageImpl<sysuser>(list, pageable, count);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.tdcg.entity.sysuser;
import org.tdcg.repository.UserMapper;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/aaaa")
public class BaiController {
@Autowired
private UserMapper userMapper;
@PostMapping("twooneplus")
public void twooneplus() {
Query query = new Query();
//模糊查询username字段内容
query.addCriteria(Criteria.where("username").regex("aaaa"));
List<Sort.Order> list = new ArrayList<>();
list.add(new Sort.Order(Sort.Direction.DESC,"username"));
Sort sort = new Sort(list);
Page<sysuser> passTime = userMapper.findPage(1,10, query, sort, sysuser.class,"sysuser");
}
}
小总结:
name是表中字段,keyword是需要模糊查询的参数
Query query = Query.query(Criteria.where(“name”).regex(keyword));
Query.GT(“value”, 2);//大于>
Query.GTE(“value”, 3);//大于等于>=
Query.LT(“value”, 9);//小于<
Query.LTE(“value”, 8);//小于等于<=
问题:Spring-Data-Jpa的Sort排序时遇到的问题 has private access in ‘org.springframework.data.domain.Sort’
springboot2.2.1(含)以上的版本Sort已经不能再实例化了,构造方法已经是私有的了!
不能用List list = new List<>();
Sort sort = new Sort(list);了
可以使用Sort.by(Sort.Direction.DESC, “bookId”)这种形式替代sort对象
Sort.by()可以一个或多个字段排序