返回顶部
首页 > 资讯 > 后端开发 > JAVA >JAVA---后端开发中实现分页功能
  • 793
分享到

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

java开发语言 2023-09-17 16:09:00 793人浏览 八月长安
摘要

文章目录 一、前言:二、 实现步骤:三、项目整体框架:四、实现过程五、整体效果:六、每日一语 一、前言: 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文件

三、项目整体框架:

在这里插入图片描述

四、实现过程

新建项目,并添加依赖
在这里插入图片描述
2.添加数据库信息,在application.properties写入连接的数据库名,连接的用户名与密码:

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

在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;}

在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);}

在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);}

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

@Servicepublic 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;    }}

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层写入一个测试文件,用于运行整体程序:
@SpringBootApplicationpublic class BooksListApplication {   public static void main(String[] args) {   SpringApplication.run(BooksListApplication.class, args);   }}
  1. 在templates层下写html文件,用于前端的展示
    (1)new_books页面:用于保存页面跳转后的页面:
    在这里插入图片描述
    (2)update_books页面:通过bootstrap官网,查看更改update books按钮的样式,将它设置成圆角绿色:
    在这里插入图片描述
    (3)index页面:新增一个查询框,学习bootstrap官网的按钮设置,将查询框里的样式改变:

在这里插入图片描述
更改update、delete按钮颜色:
在这里插入图片描述

五、整体效果:

在这里插入图片描述

六、每日一语

“有风有雨是常态,风雨兼程是状态,风雨无阻是心态” ___摘自央视

来源地址:https://blog.csdn.net/m0_66232575/article/details/131487347

--结束END--

本文标题: JAVA---后端开发中实现分页功能

本文链接: https://www.lsjlt.com/news/411231.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作