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

@Query(org.springframework.data.jpa.repository.Query)

文章目录

      • 1. `findPAProductByAdminId` 方法
        • 作用:
        • 解释:
      • 2. `findPaginatedPAProductByAdminId` 方法
        • 作用:
        • 解释:
      • 总结:

package com.productQualification.resource.repository.productAuthentication;

import com.productQualification.resource.service.productAuthentication.PAProduct;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;
import java.util.Optional;

public interface PAFindProductRepository extends JpaRepository<PAProduct, Long> {

    @Query("SELECT p FROM PAProduct p WHERE p.adminId = :adminId ORDER BY p.displayOrder DESC")
    List<PAProduct> findPAProductByAdminId(Integer adminId);

    // 根据 ID 和 adminId 查找商品
    Optional<PAProduct> findByIdAndAdminId(Integer id, Integer adminId);

    // 使用 @Query 注解,并指定按 displayOrder 降序排序
    @Query(value = "SELECT p FROM PAProduct p WHERE p.adminId = :adminId ORDER BY p.displayOrder DESC",
            countQuery = "SELECT COUNT(p) FROM PAProduct p WHERE p.adminId = :adminId")
    Page<PAProduct> findPaginatedPAProductByAdminId(Integer adminId, Pageable pageable);
}

PAFindProductRepository 接口中,定义了两个使用 @Query 注解的查询方法。这两个查询方法的作用如下:

1. findPAProductByAdminId 方法

@Query("SELECT p FROM PAProduct p WHERE p.adminId = :adminId ORDER BY p.displayOrder DESC")
List<PAProduct> findPAProductByAdminId(Integer adminId);
作用:
  • 该方法用于根据 adminId 查询所有属于该管理员的商品,并按照 displayOrder 字段降序排序。
  • 返回的结果是一个 List<PAProduct>,即符合条件的商品列表。
解释:
  • SELECT p FROM PAProduct p WHERE p.adminId = :adminId:这部分查询语句表示从 PAProduct 表中选择所有 adminId 等于传入参数 adminId 的商品。
  • ORDER BY p.displayOrder DESC:这部分表示查询结果按照 displayOrder 字段降序排列,即 displayOrder 值大的商品排在前面。

2. findPaginatedPAProductByAdminId 方法

@Query(value = "SELECT p FROM PAProduct p WHERE p.adminId = :adminId ORDER BY p.displayOrder DESC",
      countQuery = "SELECT COUNT(p) FROM PAProduct p WHERE p.adminId = :adminId")
Page<PAProduct> findPaginatedPAProductByAdminId(Integer adminId, Pageable pageable);
作用:
  • 该方法用于根据 adminId 查询所有属于该管理员的商品,并按照 displayOrder 字段降序排序,同时支持分页查询。
  • 返回的结果是一个 Page<PAProduct>,即分页后的商品列表。
解释:
  • SELECT p FROM PAProduct p WHERE p.adminId = :adminId ORDER BY p.displayOrder DESC:这部分查询语句与 findPAProductByAdminId 方法中的查询语句相同,用于选择符合条件的商品并排序。
  • countQuery = "SELECT COUNT(p) FROM PAProduct p WHERE p.adminId = :adminId":这部分是用于计算符合条件的商品总数的查询语句。Spring Data JPA 在执行分页查询时,会使用这个查询来获取总记录数,以便进行分页计算。
  • Pageable pageable:这是一个分页参数,包含了分页信息(如页码、每页大小等)。Spring Data JPA 会根据这个参数对查询结果进行分页处理。

总结:

  • findPAProductByAdminId 方法用于查询某个管理员的所有商品,并按 displayOrder 降序排列,返回一个列表。
  • findPaginatedPAProductByAdminId 方法同样用于查询某个管理员的所有商品,并按 displayOrder 降序排列,但支持分页查询,返回一个分页对象 Page<PAProduct>

这两个方法的主要区别在于是否支持分页查询。findPAProductByAdminId 返回所有符合条件的商品,而 findPaginatedPAProductByAdminId 则可以根据分页参数返回指定页的商品数据。

在这里插入图片描述


http://www.kler.cn/a/506750.html

相关文章:

  • Harmony面试模版
  • [Collection与数据结构] PriorityQueue与堆
  • OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用
  • Golang结合MySQL和DuckDB提高查询性能
  • 使用中间件自动化部署java应用
  • 50.【8】BUUCTF WEB HardSql
  • HTTP 到 HTTPS – 以下是操作步骤
  • 【Java设计模式-5】装饰模式:给咖啡加点“佐料”
  • 海太长江隧道:科技防水筑就跨江新通道
  • 卷积神经04-TensorFlow环境安装
  • Dexie.js 的批量操作与索引优化
  • 《深度学习神经网络训练:数据集下载资源列表》
  • 使用Eclipse将Springboot项目打jar包
  • GPU算力平台|在GPU算力平台部署轻量级中文OCR项目(chineseocr_lite)
  • 机器学习-学习算法
  • java实现word转html(支持docx及doc文件)
  • 常见的安全测试漏洞详解
  • VLANIF配置之区别(Differences in VLANIF Configuration)
  • 高德地图自定义点聚合样式
  • 数据结构-顺序表及链表结构分析
  • 【odbc】odbc连接kerberos认证的 hive和spark thriftserver
  • 矩阵Strassen 算法
  • C#异步编程:掌握上下文捕获,有效避免死锁
  • Navicat Premium 原生支持阿里云 PolarDB 数据库
  • EtherCAT PDO映射概述
  • 浅谈云计算19 | OpenStack管理模块 (上)