SpringData MongoDB repository 分页

使用SpringData的MongoRepository可以十分简便地操作数据,但今天发现分页功能有点“问题”。

问题:

PageRequest 的page参数 首页为 0,而不是 1。

UserRepository.java

public interface UserRepository extends MongoRepository<BetGameUserMO, String> {
    @Query("{'userName': ?0}")  
    public Page<BetGameUserMO> findByUserName(String userName, Pageable pageable);
}

查询方法一

public List<User> listUsers(String userName, int page, int pageSize) {
    Sort sort = new Sort(Sort.Direction.DESC, "createTime");
    Pageable pageable = new PageRequest(page, pageSize, sort);
    Page<User> pages= userRepository.findByUserName(userName, pageable);
    List<User> list = pages.getContent();
    return list;
}

查询方法二

public List<User> listUsers2(String userName, int page, int pageSize) {
    Sort sort = new Sort(Sort.Direction.DESC, "createTime");
    User user= new User();
    User.setUserId(userId);
    Example<User> example = Example.of(user);
    Page<User> pages= userRepository.findAll(userName, pageable);
    List<User> list = pages.getContent();
    return list;
}

logback-spring.xml

(开启debug日志,查看到调用过程,可以看出方法一与方法二会有些许区别)

<logger name="org.springframework.data.mongodb.core" level="debug"/>

从日志中看到方法二多了以下条件

{ "_class" : { "$in" : [ "kin.test.User"]}

版权声明:本文为kinsxkins原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。