JAVA---后端开发中实现分页功能

这篇具有很好参考价值的文章主要介绍了JAVA---后端开发中实现分页功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言:

Java开发是一门广泛应用于各种软件系统和网络应用的重要技术。在实际开发中,经常需要处理大量的数据和结果集,而分页功能则成为了提高用户体验和系统性能的关键。分页是将大数据集按照固定大小划分成多页并逐页显示的过程,能够有效减少数据传输量和页面加载时间,提升用户浏览效率。
在Java后端开发中,实现分页功能可以应用多种方法和技术。可以使用第三方的分页插件或框架来简化分页的操作和管理,如Spring Data JPA的分页支持。在本文中,将探讨Java后端开发中实现分页功能的方法和技巧。通过详细介绍常用的分页算法,同时,也将分享一些实际案例和示例代码,加深对分页功能的理解和应用

二、 实现步骤:

  1. 在model层定义一个实体类Books;
  2. 在repository层定义一个接口BooksRepository;
  3. 在service层定义一个接口BookService;
  4. 在service层定义一个接口BookService的实现类BooksServiceimpl;
  5. 在controller控制层写一个控制类BoksController;
  6. 在servlet层写一个BooksListApplication文件,用于运行整体程序;
  7. 在templates下写入html文件

三、项目整体框架:

java后端实现分页page,java,开发语言

四、实现过程

1.新建项目,并添加依赖
java后端实现分页page,java,开发语言
2.添加数据库信息,在application.properties写入连接的数据库名,连接的用户名与密码:

spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username= 用户名
spring.datasource.password= 用户密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto= update
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

3.在model层写一个实体类Books,里面定义书本的信息及类型:

@Data
@Entity
@Table(name = "books")
public class Books {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "name")//书名
    private String name;

    @Column(name = "author")//作者
    private String author;

    @Column(name = "publish")//出版
    private String publish;


    @Column(name = "price")//价格
    private String price;
}

4.在repository层写一个接口,用于封装数据的查询、创建、更新、删除等,供后续调用:

public interface BooksRepository extends JpaRepository<Books,Long> {
    @Query("select b from Books b where b.name like %:name%")
    List<Books> findAllByBooksName(@Param("name") String name);

}

5.在service层写一个接口BooksService,这个服务类用于服务后续测试,里面定义了方法,比如说将获取的书本存进一个列表里、新增一本书或者更新书的信息、将查询来的书本存进一个新的列表,将它们进行分页展示

public interface BookService {
 //获取所有的书本
    List<Books> getAllBooks();
  //新增/更新一本书
    void saveBooks(Books books);
 //获取指定ID的书本
    Books getBooksById(long id);
 //删除指定ID的书本
    void deleteBooksById(long id);
  //分页
    Page<Books> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection);

    List<Books> findByBooksName(String name);
}

6.在service层写一个测试类BooksServiceimpl用来继承BooksService,实现获取书本、根据id查找书本、保存书本信息到列表、根据id删除书本、根据书名查找列表是否存在此书本信息、设置排序参数,关键代码展示:

@Service
public class BooksServiceImpl implements BookService {
	@Autowired
    private BooksRepository booksRepository;

//获取所有书本
    @Override
    public List<Books> getAllBooks() {
        return booksRepository.findAll();
    }

    @Override
    public void saveBooks(Books books) {
        this.booksRepository.save(books);
    }
    @Override
    public Books getBooksById(long id) {
        //调用数据访问层查找指定ID的书本,返回Optional==(选择)对象
        Optional<Books> optional = booksRepository.findById(id);

        Books books = null;
        //如果存在指定id的书本
        if (optional.isPresent()) {
            //从Optional对象中获取书本对象
            books = optional.get();
        } else {
            //否则抛出运行时异常
            throw new RuntimeException(" 找不到书本ID :: " + id);
        }
        return books;
    }

    //删除指定id的书本
    @Override
    public void deleteBooksById(long id) {
        this.booksRepository.deleteById(id);
    }

    @Override
    public Page<Books> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection) {
        //设置排序参数,升序ASC/降序DESC?
        Sort sort = sortDirection.equalsIgnoreCase(Sort.Direction.ASC.name())
                ? Sort.by(sortField).ascending()
                : Sort.by(sortField).descending();

        //根据页号/每页记录数/排序依据返回某指定页面数据。
        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, sort);
        return this.booksRepository.findAll(pageable);
    }

    @Override
    public List<Books> findByBooksName(String name) {
        List<Books> optiona1 = booksRepository.findAllByBooksName(name);

        return optiona1;
    }
}

7.6. 在Controller层写入一个控制类,声明链接跳转到哪个页面进行,跳转后的返回值:

@GetMapping("/deleteBooks/{id}")
    public String deleteBooks(@PathVariable(value = "id") long id) {

        // call delete employee method
        this.bookService.deleteBooksById(id);
        return "redirect:/";
    }
    //获取分页数据
    @GetMapping("/page/{pageNo}")
    public String findPaginated(@PathVariable (value = "pageNo") int pageNo,
                                @RequestParam("sortField") String sortField,
                                @RequestParam("sortDir") String sortDir,
                                Model model) {
        int pageSize = 5;//每页数据量

        Page<Books> page = bookService.findPaginated(pageNo, pageSize, sortField, sortDir);
        List<Books> listBooks = page.getContent();

        model.addAttribute("currentPage", pageNo);//当前页面
        model.addAttribute("totalPages", page.getTotalPages());//总页面数
        model.addAttribute("totalItems", page.getTotalElements());

        model.addAttribute("sortField", sortField);
        model.addAttribute("sortDir", sortDir);
        model.addAttribute("reverseSortDir", sortDir.equals("asc") ? "desc" : "asc");

        model.addAttribute("listBooks", listBooks);
        return "index";
    }
  1. 在servlet层写入一个测试文件,用于运行整体程序:
@SpringBootApplication
public class BooksListApplication {

   public static void main(String[] args) {
   	SpringApplication.run(BooksListApplication.class, args);
   }

}
  1. 在templates层下写html文件,用于前端的展示
    (1)new_books页面:用于保存页面跳转后的页面:
    java后端实现分页page,java,开发语言
    (2)update_books页面:通过bootstrap官网,查看更改update books按钮的样式,将它设置成圆角绿色:
    java后端实现分页page,java,开发语言
    (3)index页面:新增一个查询框,学习bootstrap官网的按钮设置,将查询框里的样式改变:

java后端实现分页page,java,开发语言
更改update、delete按钮颜色:
java后端实现分页page,java,开发语言

五、整体效果:

java后端实现分页page,java,开发语言

六、每日一语

“有风有雨是常态,风雨兼程是状态,风雨无阻是心态” ___摘自央视文章来源地址https://www.toymoban.com/news/detail-724245.html

到了这里,关于JAVA---后端开发中实现分页功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用chatGPT快速开发java后端功能

      需求如图 常规无非是建表接口测试类,最后造数据进行自测。突发奇想,要不用GPT试一下快速写业务代码? 第一步:建表,直接复制excel中内容到GPT中  第二步:要求转为下划线:    第三步:给出条件和想要的结果(下面第一幅图是自己写的,其它代码图都是GPT生成的)

    2024年02月06日
    浏览(35)
  • Java使用Redis实现分页功能

    分页功能实现应该是比较常见的,对于redis来说,近期刷题就发现了lrange、zrange这些指令,这个指令怎么使用呢? 我们接下来就来讲解下。 lrange 是 Redis 中的一个命令,用于从 列表中 获取指定范围内的元素。 语法:lrange key start end start 和 end是两个整数,表示要从列表中获取

    2024年02月21日
    浏览(47)
  • 如何用chatGPT快速开发java后端功能接口

      需求如图 常规无非是建表接口测试类,最后造数据进行自测。突发奇想,要不用GPT试一下快速写业务代码? 第一步:建表,直接复制excel中内容到GPT中  第二步:要求转为下划线:    第三步:给出条件和想要的结果(下面第一幅图是自己写的,其它代码图都是GPT生成的)

    2024年02月06日
    浏览(39)
  • java通用分页(后端)

    目录 1.通用分页是什么? 2.通用分页的作用 3. 通用分页的优缺点  4.通用分页的核心思想 5.通用分页实例 书籍实体类: 封装pageBean类: 书籍“分页模糊查询所有”方法  封装baseDao通用分页模糊查询的方法 6.单元测试框架JUnit4  eclipse中使用JUnit4 为什么是JUnit4不是JUnit5? Java通

    2024年02月09日
    浏览(38)
  • Java设置后端分页

    getPages(Integer.parseInt(String.valueOf(page.getCurrent())),Integer.parseInt(String.valueOf(page.getSize())),dtos); /** * 对list分页 * @param currentPage * @param pageSize * @param list * @return */ private IPage getPages(Integer currentPage, Integer pageSize, List list) { IPage page = new Page(); if(list == null){ return null; } int size = list.size();

    2024年02月06日
    浏览(36)
  • Java后端向前端返回文件流——实现下载功能!

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月08日
    浏览(47)
  • Java后端向前端返回文件流——实现下载功能

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月11日
    浏览(49)
  • 在java中实现视频处理及播放功能详解

    我们知道,现在视频可以说是最火爆的多媒体手段了,所以顺带着视频处理技术也就成了目前炙手可热的技术之一了。我们作为一个Java程序员,又该怎么处理视频呢?今天Java架构栈就给大家讲解一下,如何通过Java代码来实现视频处理及播放。 在具体实现之前,我们先来看看

    2024年02月13日
    浏览(35)
  • Java中实现PDF转图片功能工具类代码详解

    以下是使用 Java 将 PDF 转换为图片的工具类示例,并且包含了测试方法: 解释: 首先,我们定义了一个 PDFToImageConverter 工具类,其中包含了 convert() 方法,用于将 PDF 转换为图片。 在 convert() 方法中,我们使用 PDFBox 库加载 PDF 文件,创建 PDF 渲染器,并将每一页 PDF 转换为 B

    2024年02月08日
    浏览(47)
  • 微信小程序分页加载功能,结合后端实现上拉底部加载下一页数据,数据加载中和暂无数据提示

    🤵 作者 : coderYYY 🧑 个人简介 :前端程序媛,目前主攻 web前端 ,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐 :《前端项目教程以及代码》 项目开发中,如果请求后端数据过多,我们一般会进行分页处理

    2024年01月25日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包