JPA踩坑笔记(二)- 分页

本文通过具体示例介绍如何在Oracle数据库中实现分页查询,包括定义实体类、创建Repository接口及使用@Query注解来指定SQL语句,并展示了如何通过调整SQL语句中的字段别名来改进查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章讲一下数据分页。
注:文章中涉及到的数据库为Oracle。

1.正文

我们继续以上一篇文章的TEST_TABLE_01为例。

@Entity
@Data
@Table(name = "TEST_TABLE_01", schema = "LOCAL")
public class Table01Entity {
    @Id
    private long id;

    private String fileType;

    private String fileSize;

    private String fileName;
}

定义Repo类,要想实现分页,需要注意几点,
1.在@Query里除了指定value,也就是sql代码,还要新增一个参数countQuery,内容把sql拷贝下来,改成查询count就好了;
2.返回值改为Page;
3.新增Pageable入参。
Pageable pageable = PageRequest.of(pageNumber,pageSize);

public interface Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {
	@Query(value = "select * from TEST_TABLE_01 t1" +
	"where t1.file_type='01'", 
	countQuery = "select count(0) from TEST_TABLE_01 t1"+
	"where t1.file_type='01'",nativeQuery = true)
	public Page<Map> findByIdOnYourOwn(Pageable pageable);
}

执行一下,你会发现,返回值就变成了带有分页的数据结构了。
但是有一个问题,返回值的key都变成了大写,FILE_TYPE,FILE_SIZE,FILE_NAME,我们需要改成如下,就好了(注意是双引号,再加一个转义字符)。

public interface Table01Repository extends JpaRepository<Table01Entity, Long>, JpaSpecificationExecutor {
	@Query(value = "select id as \"id\", file_type as \"fileType\", file_size as \"fileSize\", file_name as \"fileName\" from TEST_TABLE_01 t1" +
	"where t1.file_type='01'", 
	countQuery = "select count(0) from TEST_TABLE_01 t1"+
	"where t1.file_type='01'",nativeQuery = true)
	public Page<Map> findByIdOnYourOwn(Pageable pageable);
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值