首页 > 其他分享 >Spring Data JPA : 查-分页排序

Spring Data JPA : 查-分页排序

时间:2023-10-23 15:56:52浏览次数:42  
标签:Sort domain JPA Spring springframework import org 排序 Data

1.分页查询 

pageNumber是从0开始, pageNumber=0,pageSize=3 就是获取前3条 参考创建分页Pageable变量

创建Pageable对象,再查询

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

@Service
public class FruitServiceImpl implements FruitService {

    @Autowired
    private FruitRepository fruitRepository;

    // 分页获取
    @Override
    public List<Fruit> findAllPageable(Integer pageNumber, Integer pageSize) {

        Pageable pageable = PageRequest.of(pageNumber, pageSize); // 创建分页对象

        Page<Fruit> fruits = fruitRepository.findAll(pageable);
        Long total = fruits.getTotalElements(); // 符合条件的总记录条数
        List<Fruit> fruitList = fruits.getContent();// 这一页的所有记录
        return fruitList;
    }
}

2.先排序 再分页 查询 : 创建Sort对象,再用Sort对象创建 Pageable对象,再查询 参考Spring Data JPA 多属性排序

  •  根据一个字段排序   
  •  根据多个字段排序,排序方式一样 
  •  根据多个字段排序,排序方式不一样
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Service;

@Service
public class FruitServiceImpl implements FruitService {

    @Autowired
    private FruitRepository fruitRepository;

    @Override
    public List<Fruit> findAllPageableBySort(Integer pageNumber, Integer pageSize) {

        Sort sort = Sort.by(Direction.DESC, "name");// 排序方式  根据name降序排列
        Pageable pageable = PageRequest.of(pageNumber, pageSize, sort);// 分页对象
    
        Page<Fruit> fruits = fruitRepository.findAll(pageable);// 查询

        Long total = fruits.getTotalElements(); // 符合条件的总记录条数
        List<Fruit> fruitList = fruits.getContent();// 这一页的所有记录

        return fruitList;
    }

    // 根据多个条件先排序 再分页获取
    @Override
    public List<Fruit> findAllPageableByMultiSort(Integer pageNumber, Integer pageSize) {

        // 根据多个条件排序 先根据name降序排列,再根据color的升序排列
        List<Order> orders = new ArrayList<Sort.Order>();
        orders.add(new Order(Direction.DESC, "name"));
        orders.add(new Order(Direction.ASC, "color"));
        Sort sort = Sort.by(orders);
        Pageable pageable = PageRequest.of(pageNumber, pageSize, sort);// 分页对象

        Page<Fruit> fruits = fruitRepository.findAll(pageable);// 查询
        
        Long total = fruits.getTotalElements(); // 符合条件的总记录条数
        List<Fruit> fruitList = fruits.getContent();// 这一页的所有记录

        return fruitList;
    }
}

 

标签:Sort,domain,JPA,Spring,springframework,import,org,排序,Data
From: https://www.cnblogs.com/dreamstar99/p/17782499.html

相关文章

  • spring data jpa 使用原生sql查询数据库 原生sql中有in关键字 该如何传参?直接传List集
    springdatajpa使用原生sql查询数据库原生sql中有in关键字该如何传参?直接传List集合就能找到数据,解析List集合交给springdatajpa框架去做遇到问题?第一次写的时候in关键字后面传的是将List集合转化为一个这样的字符串,"'123','23','23'" @Query(nativeQuery=true,......
  • Spring Data JPA : 查-条件化查询Specification
    条件化查询 用查询条件创建Specification对象参考SpringDataJPASpecification查询使用Criteria查询Criteria查询是面向对象查询,root就是一个对象,root.get("name")就是name属性。可以级联获取属性每一个查询条件创建一个Specification对象,如果有多个查询条件,就把多个Spec......
  • MySQL CTE递归查询 Data too long for colum‘xxx‘ at row 1
    在mysql8使用 CTE递归查询时,出现了这个报错WITHrecursiveareaAS(SELECTarea_name,area_codeFROMsys_area_treeWHEREarea_category='1'ANDparent_codeISNULLUNIONALLSELECTconcat(t1.area_name,'/',t.area_name),t.area_code......
  • 使用JpaRepository的save方法执行成功,数据库却没有保存
    使用JpaRepository的save方法执行成功,数据库却没有保存可能是和事务有关的,这里用JpaRepository的flush方法,就可以了@TestvoidtestUserRespositorySave(){Useruser=newUser("小明","123456",18);userRespository.save(user);userRespository.flush();}原......
  • JPA查询修改数据,但是未保存到数据库,数据库却修改了,因为对查询出的Entity实体对象,修改s
    JPA查询修改数据,但是未保存到数据库,数据库却修改了,因为对查询出的Entity实体对象,修改set了属性。导致事务提交时候修改了数据库的数据使用JPA查询数据,对查询出来的结果进行修改,但是不保存数据库,最终数据库却做了同样的修改。JPA对象的四种状态瞬时状态:瞬时状态的实体就是一......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用
    1、代码生成工具Database2Sharp生成WPF界面代码WPF应用端的基础接口,和Winform端、Vue3+ElementPlus前端一样,都是调用SqlSugar开发框架中的相关业务接口,如果对我们的SqlSugar框架还有疑问,可以参考我的随笔集《SqlSugar开发框架》进行系列的学习或了解。要了解项目的快速生成,需要......
  • Oracle Database 23c 新特性预览
    OracleDatabase23c新特性预览甲骨文云技术2022-11-18999在2022年10月18号的OracleCloudWorld大会上,Oracle宣布了令人期待的OracleDatabase23cBeta版。这是世界领先的融合数据库的最新版本,支持所有数据类型、任意工作负载和多种开发风格。Oracle提出了最新......
  • DataWhale DAY5 条件语句
    DataWhaleDAY5条件语句本次学习python中的条件语句。语法博客:https://www.cnblogs.com/hewo/p/17635277.html注意点位:1.减少炫技般的使用特殊方法的判断,从理解方面简化你的代码,对于python,没有必要时不用使用奇技淫巧优化。对于true/false和0/1:​ 首先,bool是int的......
  • Springboot定时任务处理
    详细讲解SpringBoot利用注解创建静态定时任务,利用接口创建动态定时任务,利用@EnableAsync和@Async创建多线程定时任务阅读目录:序言一、静态:基于注解二、动态:基于接口三、多线程定时任务 阅读正文:回到顶部序言使用SpringBoot创建定时任务非常简单,目前主要有以下三......
  • 使用 Data Assistant 快速创建测试数据集
    DataAssistant提供超过100种数据类型,为任何开发、测试或演示目的生成大量、异构、真实的数据。官网地址:http://www.redisant.cn/da主要功能Windows原生DataAssistant使用WindowsNative技术,这保证软件具有很小的安装体积和较高的响应速度。快速生成创建小型或大型数据集,......