Springboot + jpa实现分页条件查询

springboot +jpa的技术框架,可以实现基于面向对象的orm,即不写sql语句即完成查询。

springboot框架的搭建这里不再赘述。

直接看代码:(通过jpa的Example实现条件分页查询)

 @Autowired
    private ItemDao itemDao;


    public Page<Item> getItemListByPage(Integer pageNum, Integer pageSize, String itemId) {

        Item item = new Item();
        item.setItemId(itemId);
        ExampleMatcher matcher = ExampleMatcher.matching()
                .withMatcher("itemId", ExampleMatcher.GenericPropertyMatchers.exact());

        Example<Item> example = Example.of(item, matcher);
        PageRequest pageRequest = PageRequest.of(pageNum-1, pageSize);
        Page<Item> page = null;
        if (StringUtils.isEmpty(itemId)) {
            page = itemDao.findAll(pageRequest);
        }else {
            page = itemDao.findAll(example, pageRequest);
        }
        return page;
    }

如上:

如果想要分页信息,需要实例化一个Pageable对象,传入需要分页的信息,类似于pageHelper.

需要条件查询的时候,就需要创建ExampleMatcher对象去进行匹配对象,因为在jpa框架中,数据库表中的一行数据就对象这一个对象。ExampleMatcher.GenericPropertyMatchers 可以进行包含匹配,和精确匹配。

实例化以上连个对象,再将该对象传入到JpaRepository接口中的findAll方法 中,即可完成对后台数据的条件分页查询,如果需要过滤多个参数,只需要将Example中的对象添加过滤字段以及ExampleMatcher书写对应的过滤规则即可。

发布了102 篇原创文章 · 获赞 49 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/SoWhatWorld/article/details/105040729