Spring-Data-Jpa数据分页展示

本文介绍了如何在SpringBoot项目中创建数据访问层接口(ArticleRepository),利用PagingAndSortingRepository进行分页和排序查询,以及在业务层(ArticleService)和控制器(ArticleController)中调用这些功能,以实现对Article对象的管理。
摘要由CSDN通过智能技术生成

private Double price; //单价

private String locality; //出版社

private int storage; //库存

private String image; //商品图片

private String description; //商品描述

private Date createDate; //出版时间

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getSupplier() {

return supplier;

}

public void setSupplier(String supplier) {

this.supplier = supplier;

}

public Double getPrice() {

return price;

}

public void setPrice(Double price) {

this.price = price;

}

public String getLocality() {

return locality;

}

public void setLocality(String locality) {

this.locality = locality;

}

public int getStorage() {

return storage;

}

public void setStorage(int storage) {

this.storage = storage;

}

public String getImage() {

return image;

}

public void setImage(String image) {

this.image = image;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

public Date getCreateDate() {

return createDate;

}

public void setCreateDate(Date createDate) {

this.createDate = createDate;

}

}

2、定义数据访问层接口

在repository包下新建一个接口,命名为ArticleRepository,让该接口继承PagingAndSortingRepository继承,以持久化对象Article作为PagingAndSortingRepository的第一类型参数,表示当前所操作的持久化对象类型,Integer作为PagingAndSortingRepository的第二个类型参数,用于指定ID类型,完整代码如下

import com.mcy.springdatajpa.entity.Article;

import org.springframework.data.repository.PagingAndSortingRepository;

public interface ArticleRepository extends PagingAndSortingRepository<Article, Integer> {

}

PagingAndSortingRepository提供了查询所有和分页查询的方法,PagingAndSortingRepository接口的源码如下

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;

@NoRepositoryBean

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {

Iterable findAll(Sort var1); //查询所有,排序

Page findAll(Pageable var1); //分页查询

}

在SpringBoot项目中,数据访问层无须提供实现,直接继承数据访问接口即可。

3、定义业务层类

ArticleService .java代码如下(有findAllSort排序查询所有,findAll分页查询两个方法)

import com.mcy.springdatajpa.entity.Article;

import com.mcy.springdatajpa.repository.ArticleRepository;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service

public class ArticleService {

//数据访问层接口对象

@Resource

private ArticleRepository articleRepository;

//排序查询所有

public Iterable

findAllSort(Sort sort){

return articleRepository.findAll(sort);

}

//分页查询所有

public Page

findAll(Pageable page){

return articleRepository.findAll(page);

}

}

在业务层中需要注入数据访问层对象,在上述代码中通过@Resource注解将ArticleRepository接口对应的实现类注入进来的。

4、定义控制器

ArticleController.java代码如下(有sortArticle排序查询所有,sortPagerArticle分页排序查询两个方法)

import com.mcy.springdatajpa.entity.Article;

import com.mcy.springdatajpa.service.ArticleService;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageRequest;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

import java.util.List;

@RestController

@RequestMapping(“/article”)

public class ArticleController {

//注入ArticleServer

@Resource

private ArticleService articleService;

//排序查询

@RequestMapping(“/sort”)

public Iterable

sortArticle(){

//指定培训参数对象:根据id,进行降序查询

Sort sort = Sort.by(Sort.Direction.DESC, “id”);

Iterable

articleDatas = articleService.findAllSort(sort);

return articleDatas;

}

//分页排序查询

@RequestMapping(“/pager”)

public List

sortPagerArticle(int pageIndex){

//指定排序参数对象:根据id,进行降序查询

Sort sort = Sort.by(Sort.Direction.DESC, “id”);

/**

  • 封装分页实体

  • 参数1:pageIndex表示当前查询的是第几页(默认从0开始,0表示第一页)

  • 参数2:表示每页展示多少数据,现在设置每页展示2条数据

  • 参数3:封装排序对象,根据该对象的参数指定根据id降序查询

*/

Pageable page = PageRequest.of(pageIndex - 1, 2, sort);

//分页查询

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
习。

[外链图片转存中…(img-Pu6c8cmA-1713398868652)]

[外链图片转存中…(img-jA7tlGAi-1713398868652)]

[外链图片转存中…(img-ytd0hHW0-1713398868653)]

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

[外链图片转存中…(img-iAQ8EWYf-1713398868654)]

[外链图片转存中…(img-ohKlqSlq-1713398868654)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值