SpringDataJpa分页关联查询

一、创建接口OrderDao

public interface OrderDao extends JpaSpecificationExecutor,JpaRepository {}

二、实现类OrderServiceImpl的分页查询

public Page findAllByPage(Integer pageNum, Integer pageSize){
    PageRequest pageRequest = PageRequest.of( pageNum,pageSize );
    Page page = orderDao.findAll(pageRequest );
    return page;
}   

这里好像没有什么问题,但是如果分页关联查询就比较麻烦了,比如根据订单对象里的用户id查询用户的姓名或者手机号,你会发现Page对象只有一个getContent()方法,却没有set方法,仿佛分页对象Page是不可修改的,深入了解才知道它有一个map()方法,可进行关联查询操作,如下:

public Page findAllByPage(Integer pageNum, Integer pageSize){
    PageRequest pageRequest = PageRequest.of( pageNum,pageSize );
    Page page = orderDao.findAll(pageRequest );
    Page map = page.map(order ->{
        User user = userService.findById( order.getuId() );
        if(user!=null){
            order.setNickName( user.getNickName() );

        }
        return order;
    });

    return map;
}   

这样分页对象里就包含了订单对象和用户昵称

访问我的达人课

关注我的微信公众号获取更多资源

SpringDataJpa分页关联查询_第1张图片

你可能感兴趣的:(SpringDataJpa)