当前位置: 首页 > wzjs >正文

集团公司网站源码下载网络推广方法有几种

集团公司网站源码下载,网络推广方法有几种,网站修改 iis6应用程序池,营销案例分析网站文章目录 Spring Data JPA 中的分页实现:从 BasePage 到 Pageable背景:为什么需要分页?认识 BasePage 类深入 toPageable() 方法1. 处理页码和页面大小2. 处理排序方向3. 处理排序字段4. 生成 Pageable 对象 实战:如何使用 BasePa…

文章目录

  • Spring Data JPA 中的分页实现:从 BasePage 到 Pageable
    • 背景:为什么需要分页?
    • 认识 BasePage 类
    • 深入 toPageable() 方法
      • 1. 处理页码和页面大小
      • 2. 处理排序方向
      • 3. 处理排序字段
      • 4. 生成 Pageable 对象
    • 实战:如何使用 BasePage
      • 1. 前端请求
      • 2. 后端控制器
      • 3. 查询数据库
      • 4. 返回结果
    • 小结


Spring Data JPA 中的分页实现:从 BasePage 到 Pageable

在现代 Web 开发中,分页是一个常见的需求。无论是展示商品列表、文章列表还是用户数据,当数据量较大时,分页不仅能提升用户体验,还能减轻服务器的压力。如果你使用的是 Spring Boot 和 Spring Data JPA,那么分页功能已经内置其中,开发者只需简单配置即可实现。今天,我们通过一个简单的 BasePage 类,来看看如何优雅地实现分页和排序功能。

背景:为什么需要分页?

假设你正在开发一个电商平台,数据库中有成千上万的商品记录。如果一次性将所有数据返回给前端,不仅加载速度会变慢,用户也很难从中找到所需信息。这时,分页就派上用场了:每页显示固定数量的记录(比如 10 条),用户可以通过翻页操作逐步浏览。

Spring Data JPA 提供了一个强大的接口 Pageable,它封装了分页和排序的逻辑。通过 Pageable,我们可以轻松实现“第几页”、“每页几条”以及“按什么字段排序”的功能。而今天的主角——BasePage 类,就是一个自定义的分页模型,通过它我们可以将前端传入的分页参数转换为 Pageable 对象。

认识 BasePage 类

BasePage 是一个简单的分页模型类,包含了分页和排序的核心属性。以下是它的代码结构:

public class BasePage {@ApiModelProperty("页码")Integer page;@ApiModelProperty("页大小")Integer size;@ApiModelProperty(value = "排序规则(ASC/DESC)", allowableValues = "ASC,DESC")String direction;@ApiModelProperty("排序字段")String[] properties;// 构造函数、getter 和 setter 略public Pageable toPageable() {page = page != null ? page : 0;size = size != null ? size : 9999;Sort.Direction dir = Sort.Direction.fromOptionalString(this.direction).orElse(Sort.Direction.DESC);Sort sort = (properties != null && properties.length > 0) ? Sort.by(dir, properties) : Sort.by(dir, "createdDate");return PageRequest.of(page, size, sort);}
}

这个类包含了四个关键属性:

  • page:页码,表示当前是第几页。
  • size:每页的大小,表示每页显示多少条记录。
  • direction:排序方向,可以是 "ASC"(升序)或 "DESC"(降序)。
  • properties:排序字段,表示按哪些字段排序。

toPageable() 方法则是这个类的核心,它将这些属性转化为 Spring Data JPA 所需的 Pageable 对象。

深入 toPageable() 方法

让我们一步步拆解 toPageable() 方法,看看它是如何工作的:

1. 处理页码和页面大小

page = page != null ? page : 0;
size = size != null ? size : 9999;
  • 如果 page 未设置(null),默认值为 0,表示第一页(Spring Data 的页码从 0 开始)。
  • 如果 size 未设置,默认值为 9999。这是一个很大的数字,通常是为了在未指定页面大小时尽量返回所有数据。不过在实际应用中,建议根据业务需求设置一个合理的默认值,比如 10 或 20。

2. 处理排序方向

Sort.Direction dir = Sort.Direction.fromOptionalString(this.direction).orElse(Sort.Direction.DESC);
  • Sort.Direction 是 Spring Data 的枚举类,表示排序方向。
  • fromOptionalString(this.direction) 尝试将 direction(如 “ASC” 或 “DESC”)解析为 Sort.Direction 类型。
  • 如果解析失败或 directionnull,则使用默认值 Sort.Direction.DESC(降序)。

3. 处理排序字段

Sort sort = (properties != null && properties.length > 0) ? Sort.by(dir, properties) : Sort.by(dir, "createdDate");
  • 如果 properties 不为空,则按指定的字段排序。
  • 如果 properties 为空或未设置,则默认按 "createdDate"(创建时间)字段排序。
  • Sort.by(dir, properties) 创建了一个 Sort 对象,封装了排序方向和字段。

4. 生成 Pageable 对象

return PageRequest.of(page, size, sort);
  • 使用 PageRequest.of() 方法,将页码、页面大小和排序规则组合成一个 Pageable 对象。
  • 这个对象可以直接传递给 Spring Data 的查询方法。

实战:如何使用 BasePage

假设我们有一个商品管理的接口,需要支持分页和排序。以下是实现步骤:

1. 前端请求

前端发送一个 HTTP 请求,例如:

GET /products?page=1&size=10&direction=ASC&properties=price
  • page=1:请求第 2 页(从 0 开始计数)。
  • size=10:每页 10 条记录。
  • direction=ASC:按升序排序。
  • properties=price:按价格排序。

2. 后端控制器

在 Spring Boot 的控制器中接收参数并构造 BasePage

@RestController
@RequestMapping("/products")
public class ProductController {@Autowiredprivate ProductRepository productRepository;@GetMappingpublic Page<Product> getProducts(@RequestParam(required = false) Integer page,@RequestParam(required = false) Integer size,@RequestParam(required = false) String direction,@RequestParam(required = false) String[] properties) {BasePage basePage = new BasePage();basePage.setPage(page);basePage.setSize(size);basePage.setDirection(direction);basePage.setProperties(properties);Pageable pageable = basePage.toPageable();return productRepository.findAll(pageable);}
}

3. 查询数据库

ProductRepository 是一个 Spring Data JPA 提供的接口:

public interface ProductRepository extends JpaRepository<Product, Long> {
}

调用 findAll(Pageable pageable) 方法后,Spring Data 会自动生成 SQL 查询,返回分页后的结果。

4. 返回结果

最终返回的 JSON 可能长这样:

{"content": [{"id": 1, "name": "商品A", "price": 10.0},{"id": 2, "name": "商品B", "price": 15.0},...],"totalElements": 50,"totalPages": 5,"number": 1,"size": 10
}

小结

通过 BasePagetoPageable() 方法,我们实现了一个简单而灵活的分页模型。它的优点在于:

  • 简单易用:只需设置几个属性,就能生成 Pageable 对象。
  • 默认值友好:未设置的参数有合理的默认值,避免空指针问题。
  • 支持排序:灵活指定排序字段和方向,满足复杂需求。

当然,实际开发中还可以根据需求扩展 BasePage,比如添加参数验证、支持多字段排序等。Spring Data JPA 的分页功能非常强大,配合自定义模型类,可以让代码更优雅、更易维护。

如果你也正在为分页功能苦恼,不妨试试这种方式吧!有什么问题或想法,欢迎在评论区交流。


在这里插入图片描述

http://www.dtcms.com/wzjs/137244.html

相关文章:

  • 导入表格数据做地图网站电脑培训班零基础
  • 网络科技有限公司网站中国数据统计网站
  • 网站必须做商标么免费的网页设计成品下载
  • 衡水 网站建设网站宣传文案范例
  • 网站改版的意义网页制作源代码
  • 有哪些网站建设公司龙华网站建设
  • 佛山制作手机网站seo资料
  • 个人免费网站注册comseo网站内部优化方案
  • 古色古香的网站模板2345网止导航
  • 潍坊做网站建设的公司自创网站
  • 网站建设网站排行谷歌海外广告投放推广
  • 泰安做网站建设的公司热点事件营销案例
  • 机关党建项目网站建设方案人民网舆情数据中心官网
  • 西城网站建设浩森宇特腾讯推广平台
  • 广安做网站seo1搬到哪里去了
  • 重庆网站制作招聘seo变现培训
  • 网站制作教程百度一下就知道手机版
  • 找谁做网站比较好东莞免费网站建设网络营销
  • 网站开发管理黑帽seo培训网
  • 企业网站开发流程什么是百度指数
  • java开发网站跟php开发网站区别渠道策略的四种方式
  • 用别人家网站做跳转淘宝流量助手平台
  • 网站及数据库怎么做后门南宁seo外包服务
  • 网站开发技术方法与路线seo课程培训
  • 万网注册域名做简单网站360指数官网
  • 西安免费建网站设计重庆百度推广优化排名
  • 天猫秘券网站怎么做seo关键词优化指南
  • 聊城做网站的公司效果百度健康人工客服电话24小时
  • 网站建设的战略作用适合中层管理的培训
  • 企业网站建设cms河南网站推广那家好