`

Spring Data Jpa 简单分页查询(1)

 
阅读更多

      ibatis发展到MyBatis,已经越来越像Hibernate,就像有人调侃,nosql技术系发展到最后就是关系型数据库。

 

      嘿嘿。

 

关于Spring data jpa的简单分页查询可以参考SpringDataJpa的官方文档。

 

1:实体类和表的关系

(1)表数据结构

create table T_USER
(
  ID       VARCHAR2(50),
  USERID   VARCHAR2(50),
  USERNAME VARCHAR2(50),
  PASSWORD VARCHAR2(50)
)

 

 

(2)实体类

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Data;

@SuppressWarnings("serial")
@Entity
@Table(name = "T_USER")
@Data
public class SimpleUserEntity implements Serializable {

	@Id
	@Column( name = "ID", length = 50,unique = true,nullable = false)
	private String id;
	
	@Column( name = "USERID", length = 50,unique = true,nullable = false)
	private String userId;
	
	@Column( name = "USERNAME", length = 50,nullable = false)
	private String userName;
	
	@Column( name = "PASSWORD", length = 50,nullable = false)
	private String passWord;
	
}

 

 

1:new Object(feild1,feild2)的用法

 

(1)该方式需保证对应实体类的方法,有对应的构造方法。

	public SimpleUserEntity(String userId,String userName){
		this.userId = userId;
		this.userName = userName;
	}

 

 

 

(2)新建Repository接口

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;


public interface SimpleQueryRepository extends PagingAndSortingRepository<SimpleUserEntity, String> {
	
	@Query( value = " select new SimpleUserEntity(s.userId,s.userName) from SimpleUserEntity s ", countQuery = " select count(s) from SimpleUserEntity s" )
	Page<SimpleUserEntity> userPageData(Pageable page);
	
}

 

 (3)测试用例

 

import lombok.extern.slf4j.Slf4j;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

import com.slfinance.shanlinbao.repository.SimpleQueryRepository;
import com.slfinance.shanlinbao.repository.SimpleUserEntity;

@ContextConfiguration(locations = { "classpath:/application-jpa.xml"})
@ActiveProfiles("dev")
@Slf4j
public class SimpleQueryRepositoryTest extends AbstractJUnit4SpringContextTests {

	@Autowired
	SimpleQueryRepository simpleQueryRepository;
	
	final int pageNum = 0, pageSize = 10;
	
	@Test
	public void testFindPage(){
		
		Order order = new Order(Direction.DESC,"id"); //字段排序O
		PageRequest pageRequest = new PageRequest(pageNum, pageSize, new Sort(order));
		Page<SimpleUserEntity> userPage = simpleQueryRepository.userPageData(pageRequest);
	}
}

 (3)返回数据

        {
            "id": null,
            "userId": "A004",
            "userName": "jack4",
            "passWord": null
        }

 

 

2:new Map(feild1 as otherAlias1,feild2 ad otherAlias2)

有时有些业务需要将查询出的字段更改别名,通过new Map() 方式也是思路之一。

(1)接口SimpleQueryRepository新增如下方法 

	@Query( value = " select new Map(s.userId as userNo,s.userName as name) from SimpleUserEntity s ", countQuery = " select count(s) from SimpleUserEntity s" )
	Page<Map<String,Object>> userPageDataMap(Pageable page);

 (2)SimpleQueryRepositoryTest新增方法

	@Test
	public void testFindPageForMap(){
		Order order = new Order(Direction.DESC,"id"); //字段排序O
		PageRequest pageRequest = new PageRequest(pageNum, pageSize, new Sort(order));
		Page<Map<String,Object>> userPage = simpleQueryRepository.userPageDataMap(pageRequest);
	}

  

 (3)返回数据

        {
            "userNo": "A004",
            "name": "jack4"
        }

 

 

 

 

分享到:
评论

相关推荐

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    Spring Data JPA 提供了内置的支持,可以在查询方法中通过 `Pageable` 参数实现分页和排序。 5. **Auditing**:Spring Data JPA 提供了审计功能,可以自动记录实体的创建时间和修改时间。这可以通过 `@CreatedDate`...

    Spring Data JPA 笔记

    1. **实体(Entities)**:在Spring Data JPA中,实体是数据库表的映射。通过在类上添加`@Entity`注解,我们可以声明一个Java类为数据库表的代表。`@Id`注解用于标识主键字段。 2. **Repository**:Repository是...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring Data JPA提供了强大的Repository抽象,允许开发者以声明式的方式定义数据操作,如查询方法。只需要在接口上定义方法名,Spring Data JPA就能自动生成对应的SQL语句。例如,`findAll()`会执行SELECT ALL查询,...

    spring data jpa分页查询示例代码

    使用 `Pageable` 是 Spring Data JPA 中最简单的分页查询方式。可以在 Repository 接口中添加一个返回 `Page` 对象的方法,例如: ```java public interface CameraInfoRepo extends JpaRepository, String&gt;, ...

    Spring Data JPA从入门到精通

    9. **数据分页与排序**:Spring Data JPA提供了PagingAndSortingRepository接口,支持分页查询和结果排序。 10. **关联关系**:包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@...

    Spring Data JPA的优点和难点.pdf

    - Spring Data JPA虽然简化了查询编写,但可能导致生成的SQL不够优化,尤其是在处理大数据量或复杂查询时。开发者需要熟悉JPA的内部工作原理,适时使用`@Query`注解自定义SQL,以提升性能。 2. **关联关系的处理**...

    SpringBoot中使用Spring-data-jpa分页查询

    在Spring Boot应用中,使用Spring Data JPA进行分页查询是一种高效且简洁的方式。Spring Data JPA是Spring框架的一部分,它提供了对Java Persistence API (JPA) 的简化封装,允许开发者通过面向接口的方式进行数据库...

    JPA分页查询与条件分页查询

    总的来说,JPA分页查询和条件分页查询为开发者带来了极大的便利,它减少了对SQL的直接操作,提高了代码的可读性和可维护性。通过合理地运用Spring Data JPA的特性,可以构建出高效、灵活的数据库访问层。在设计和...

    spring data jpa 教程

    本教程将详细介绍 Spring Data JPA 的核心概念与使用方法,帮助开发者从基础入门到实现复杂查询的完整过程。 第一章:Spring Data JPA 入门 Spring Data JPA 简化了 JPA(Java Persistence API)的开发,通过约定...

    Spring Data JPA.zip

    - **强大的查询支持**:除了简单的 CRUD 方法,Spring Data JPA 还支持基于方法名的复杂查询,甚至可以使用 JPA Querydsl 或 Specification 进行更复杂的查询。 - **事务管理**:Spring Data JPA 结合 Spring 的事务...

    spring data jpa简单案例

    在实际项目中,你可能需要处理更复杂的查询,如分页、排序、聚合等,Spring Data JPA 都能提供相应的支持。同时,通过自定义查询方法,你可以轻松扩展功能,而无需编写繁琐的 SQL 语句。 **标签解析:** - **源码**...

    Spring Data JPA中文文档[1.4.3].zip

    6. **分页和排序**:Spring Data JPA支持在查询结果中进行分页和排序,可以方便地通过Repository接口实现。 7. **存储过程**:Spring Data JPA也支持调用数据库存储过程,并将其结果转换为Java对象。 8. **JPA实体...

    spring data jpa 的Specifications动态查询

    在处理复杂的查询需求时,Spring Data JPA的`Specifications`接口提供了动态构建查询的能力,允许我们在运行时根据业务逻辑创建复杂的查询条件。 ### 单条件查询 在Spring Data JPA中,我们可以使用`...

    spring学习:spring data jpa

    3. **Pageable 和 Sort**:Spring Data JPA支持分页查询和排序。`Pageable`接口提供了页码和每页大小的设置,`Sort`接口用于定义排序规则。 4. **JPQL 和 Criteria API**:如果需要更复杂的查询,可以使用JPQL...

    Spring Data JPA入门项目02

    在本项目"Spring Data JPA入门项目02"中,我们将深入探讨如何使用Spring Data JPA进行查询操作,包括排序和分页。Spring Data JPA是Spring Framework的一个模块,它为Java Persistence API (JPA) 提供了一种更加便捷...

    其实spring data jpa比mybatis更好用.zip_JPA mybatis

    通过定义简单的接口,Spring Data JPA可以自动生成对应的查询,包括CRUD操作以及复杂的聚合查询。 **Spring Boot与Spring Data JPA的结合** 在Spring Boot框架中,Spring Data JPA的集成变得更加简单。Spring Boot...

    SpringData JPA 参考文档PDF 英文

    文档中所涉及的知识点涵盖了从简单的仓库接口定义、查询创建,到复杂的事务管理、锁定机制和审计功能的配置,使得开发者能够利用Spring Data JPA来极大减少数据访问层的代码量,专注于业务逻辑的实现。文档的编写以...

    Spring+Spring MVC+SpringData JPA整合完成增删改查,翻页实例.zip

    在这个"Spring+Spring MVC+SpringData JPA整合完成增删改查,翻页实例"中,我们将深入探讨这三个组件如何协同工作,实现高效的数据管理与用户交互。 首先,Spring MVC是Spring框架的一个模块,专门用于构建Web应用...

    Spring Data JPA中文文档[1.4.3]

    1. **Repository接口**:这是Spring Data JPA的核心特性之一,通过定义一组通用的CRUD(创建、读取、更新、删除)操作接口,开发者可以快速实现数据访问层。例如,`CrudRepository`接口提供了基本的增删查改方法,而...

Global site tag (gtag.js) - Google Analytics