跟着JHipster学做项目 (17) Spring Boot处理分页和排序

Vue前端字段排序,Spring Boot 集成Mybatis-plus 使用Oracle/MySQL,驼峰映射(下划线)问题 实现Vue前端页面表格内,各字段都能自定义降序或升序排列展示。 阅读详情

JHipster利用了Spring Boot的Pageable分页机制,前端排序是针对数据库数据,而非当前页面数据,充分满足了实际需求。下面分前端和后端两部分分别介绍一下它的实现方式。

前端利用两个辅助函数,向后端传递了分页参数:当前页page,每页条目size,排序属性prop,direction。本文以mongoDB为例。

sort函数中接收了排序属性和排序方向,同序情况下以id降序。

  public sort(): any {
    const result = [this.propOrder + ',' + (this.reverse ? 'desc' : 'asc')];
    if (this.propOrder !== 'id') {
      result.push('id');
    }
    return result;
  }

buildPaginationQueryOpts函数是组装了后端Pageable所需要的属性。

function buildPaginationQueryOpts(paginationQuery) {
  if (paginationQuery) {
    let sorts = '';
    for (const idx of Object.keys(paginationQuery.sort)) {
      if (sorts.length > 0) {
        sorts += '&';
      }
      sorts += 'sort=' + paginationQuery.sort[idx];
    }
    return `${sorts}&page=${paginationQuery.page}&size=${paginationQuery.size}`;
  }
  return '';
}

最后在retrieve中向后端发出请求:

  public retrieve(req?: any): Promise<any> {
    return axios.get(`api/admin/users?${buildPaginationQueryOpts(req)}`);
  }

例如:每页显示3行,显示第一页,以login升序排列,请求URL为:

http://localhost:9000/api/admin/users?sort=login,asc&sort=id&page=1&size=3

至此开始介绍后端接收请求后的分页和排序实现方法。

UserResource接收如上参数,利用Spring Boot自带机制,自动组合为Pageable对象,代码如下:

    @GetMapping("/users")
    @PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
    public ResponseEntity<List<AdminUserDTO>> getAllUsers(Pageable pageable) {
        log.debug("REST request to get all User for an admin");
        if (!onlyContainsAllowedProperties(pageable)) {
            return ResponseEntity.badRequest().build();
        }

        final Page<AdminUserDTO> page = userService.getAllManagedUsers(pageable);
        HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
        return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
    }

UserService就是简单利用userRepository来进行数据库查询,代码如下:

    public Page<AdminUserDTO> getAllManagedUsers(Pageable pageable) {
        return userRepository.findAll(pageable).map(AdminUserDTO::new);
    }

UserRepository继承了MongoRepository

@Repository
public interface UserRepository extends MongoRepository<User, String> {
    Optional<User> findOneByActivationKey(String activationKey);

    List<User> findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime);

    Page<User> findAll(Pageable pageable);
}

Good Luck,

Cheers!

jeecgboot 前端vue 表格列数据需要查询后端数据动态改变列数据显示 vue ant table customRender 不能用this访问内部数据的解决_随记-优快云博客 先定义corpList,mounted函数请求后端数据,customRender函数遍历corpList改变列的值 var corpList = [] export default { name: 'UniHitRateRecordList', mixins:[JeecgListMixin, mixinDevice], components: { ... 阅读详情

相关推荐

Mybatis分页查询——四种传参方式

Mybatis分页查询——四种传参方式

qq_53317005的博客 7278

Spring Boot之Swagger接口分类和参数排序问题详解

之前通过Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档一文,我们学习了如何使用Swagger为Spring Boot项目自动生成API文档,有不少用户留言问了关于文档内容的组织以及排序问题。所以,就特别开一篇详细说说Swagger中文档内容如何来组织以及其中各个元素如何控制前后顺序的具体配置方法。 接口的分组 我们在Spring Boot中定义各个接口是以Controller作为第一级维度来进行组织的,Controller与具体接口之间的关系是一对多的关系。我们可以将同

疯一样的女子 1万+

【rPPG】基于多光谱摄像头的非接触式睡眠血氧监测系统(传统建模方法解析)

本文深入解析了基于多光谱摄像头的非接触式睡眠血氧监测系统,重点探讨了rPPG技术的原理、硬件设计及传统建模方法。通过多光谱摄像头捕捉皮肤微弱光学变化,实现医疗级精度的心率和血氧监测,特别适合长期睡眠监测场景。文章详细介绍了摄像头选型、照明系统设计以及PBV模型等核心技术,并对比了与传统传感器的性能差异。

weixin_30300225的博客 561

跟着JHipster学做项目 (12) 分页处理(下)前端进行分页及排序查询

JHipster的前端分页组件由两部分组成:分页信息组件,分页加载组件。 <div v-show="users && users.length > 0"> <div class="row justify-content-center"> <jhi-item-count :page="page" :total="queryCount" :itemsPerPage="itemsPerPage"&g

java_augur的专栏 443

二次开发vba_CATIA VBA(VBS)二次开发:使用Search批量选择元素

在CATIA二次开发中很多在程序中进行自动交互的方法或函数都需要使用选择集作为参数,将几何元素按照要求批量添加到选择集中也是实现程序自动运行的有效方法。在前面的文章《CATIA使用VBA(VBS)二次开发时用户的交互选择》和《CATIA使用VBA(VBS)二次开发时工程图和草图位置的交互选择函数Indicate2D》中介绍了在CATIA VBA(VBS)二次开发中用户和选择集之间的交互操...

weixin_32497403的博客 1321

乐视三合一体感摄像头--基本信息及windows下部分开发

乐视三合一体感摄像头--基本信息及windows下部分开发Introduction基本信息Windows下使用安装驱动使用openNI使用imageJ调用RGB图像Q:参考资料 Introduction       乐视三合一体感摄像头是乐视对标kinect,做的一款3D体感摄像头;设计目的为用于电视机上体感使用的,包括其USB结构都是为了符合电视机直接操作的,同时是支持相应的游戏操作;但是自从乐视倒闭之后,价格从之前标价899降到了现在140+左

GRF-Sunomikp31 1万+

跟着JHipster学做项目 (12) 分页处理(上)后端利用Pageable进行分页查询

JHipster的后端分页处理最大的特点是保持DTO类不受分页信息污染,不必包含分页相关属性,如页数,总数,排序等。 Controller类如下: @GetMapping("/users") public ResponseEntity<List<UserDTO>> getAllUsers(Pageable pageable) { final Page<UserDTO> page = userService.getAllManagedU

java_augur的专栏 913

git连接华为软件开发云

我用的是github客户端的git shell 连接。用git bash也可以github客户端下载地址:https://desktop.github.com/1.在华为软件开发云上创建代码仓库2.在本地创建密钥SSH密钥帮助文档公钥是代码托管服务(CodeHub)识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与代码托管服务(CodeHub)建立联系, 然后您就可以很方便的将本地...

sigmeta的博客 2112

全面解析 great-big-example-application:JHipster 驱动的全栈开发终极指南 [特殊字符]

**great-big-example-application** 是一个基于 JHipster 生成的完整全栈示例应用,集成了 Spring Boot、Kotlin、Angular 4、ngrx 和 Webpack 等现代技术栈。这个项目是学习企业级应用开发的绝佳范例,特别适合想要掌握全栈开发技术的开发者和团队。通过这个完整的示例应用,您可以快速了解如何构建现代化的 Web 应用程序架构。 #

gitblog_01128的博客 418

开源CMDB与资产管理平台对比报告

本文对比分析了9款主流开源CMDB平台,从集成能力、功能完整性和多语言支持三个维度进行评测。重点介绍了VeCMDB、蓝鲸CMDB、WeCMDB和OpsAny等国产平台的特色:VeCMDB以动态模型和自动发现见长;蓝鲸CMDB适合超大规模企业级应用;WeCMDB专注金融级高并发场景;OpsAny提供一体化运维解决方案。针对不同规模企业给出选型建议:中小团队推荐Snipe-IT等轻量工具;大型企业建议蓝鲸或WeCMDB;需国产化适配的可选VeCMDB或OpsAny。文章还特别指出iTop、GLPI等适合ITIL

huang0612123的博客 1080

AI生成代码与架构的潜在风险:识别与防范AI-Generated Smells

在软件工程领域,代码质量与架构设计是保障系统长期可维护性的核心。传统开发中,开发者通过代码审查、设计模式等手段确保质量,但随着大语言模型(LLM)和AI智能体(Agent)在编程中的广泛应用,AI生成的代码和架构带来了新的挑战。AI基于统计模式生成的代码,可能在语法正确性上无可挑剔,但在架构一致性、领域逻辑深度上存在隐患,形成所谓的“AI-Generated Smells”。这种现象在Agent-Driven Development中尤为突出,AI的自主迭代可能导致局部优化、架构腐蚀等问题。为应对这些风险,

weixin_33991418的博客 481

【Go语言实战】(9) gRPC 实现一个简单微服务

文章目录写在前面1. 安装1.1 grpc1.2 proto1.3 protobuf2. 编写代码2.1 初始化项目2.2 编写proto2.3 编写服务端2.4 实现客户端3. 演示 写在前面 这一次我们用gRPC实现获取用户的信息 1. 安装 1.1 grpc grpc的安装直接go get即可 go get google.golang.org/grpc 1.2 proto 下载proto,我是下载这个的。 然后解压出来把bin目录放在直接放在系统变量当中 1.3 protobuf 我们在

面向生活编程 3272

Springboot之页面参数传递

在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们的后端web服务器(也就是内置的Tomcat)。而我们在开发web程序时呢,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应,响应一个字符串 “Hello World”。

wyhwust的博客 935

Android 13 RK3588 编译烧写实录全程

本文详细记录了RK3588主板在Android 13系统下的各项功能测试与编译过程。主要内容包括:1)网络功能测试(以太网、WiFi、蓝牙连接);2)外设接口测试(耳机、麦克风、USB、TF卡);3)硬件功能验证(RTC时钟、ADC采样、MIPI摄像头);4)系统设置(手势导航、开发者选项);5)Android 13 SDK编译环境搭建与源码获取方法。通过图文并茂的方式展示了各功能的配置方法、操作步骤和测试结果,为开发者提供了全面的参考指南。

hnjzfwy的博客 238

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)

Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)

showswoller的博客 1997

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

springboot中接口post请求时分页处理

springboot中接口post请求时分页处理

u011250186的博客 1802

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

基于Spring Boot框架的分页查询和文件上传

要想从数据库中进行分页查询,我们要使用LIMIT关键字,格式为:limit 开始索引 每页显示的条数假设一页想展示10条数据查询第1页数据的SQL语句是:查询第2页数据的SQL语句是:查询第3页的数据的SQL语句是:观察以上SQL语句,发现: 开始索引一直在改变 , 每页显示条数是固定的开始索引的计算公式: 开始索引 = (当前页码 - 1) * 每页显示条数开始索引 = (当前页码 - 1) * 每页显示条数当前页码 page每页显示条数 pageSize。

weixin_74521994的博客 2090

jeecg list 排序

列表默认排序 有几种方式 1. 在 form 表单 加入 如果 需要哪个字段排序 <t:dgCol 里面我设了sortable=“ture” sortorder=“”… 在controler 代码 加入 – 页面 的默认排序 是优先于 后台代码的排序字段 https://www.cnblogs.com/linvan/p/6809672.html 锁定列 eecg的<t:dg...

allgame029的博客 1874

jeecg-boot 查询多字段排序

在你所在页面重写获取查询获取参数函数 getQueryParams(){ //获取查询条件 let sqp = {} if(this.superQueryParams){ sqp['superQueryParams']=encodeURI(this.superQueryParams) sqp['superQueryMatchType'] = this.superQueryMatchType } ...

qq_41722795的博客 1894

基于JeecgBoot开发,列表页面请求时的排序修改

基于JeecgBoot做二次开发,实现列表页面数据请求根据自定义字段排序的功能

江湖郎中 6124

jeecg-boot中table表格,默认根据某一列排序的方法

在data中定义isorter对象, order:asc/desc ; column:string; //根据排序的列

weixin_45930242的博客 1845

jeecg去掉默认create_time Desc排序

jeecg-boot框架list查询列表时,用QueryWrapper,默认按创建时间(create_time)倒序排序,若想去掉只需重写前端VUE排序方法即可。

AnNong 4948

一种列表全字段排序功能方案

需求概述; 实现方案; 技术栈:后端:Java+Spring Boot+Mybatis+MySQL;前端:TypeScript+React+Ant Design。

lonelymanontheway的博客 1152

bootstrap-table 前端排序以及后端排序

前端排序 1. 列参数设置: columns:[{ title: '编号', field: 'planNo', align:'center', width:120, sortable:true, sorter:'sortStr' },.... ] 2. 自定义排序 sortStr= function(a, b) { var a = a?a:-1, b = b?b:-1 return a.localeCompare(b) },

ahook的专栏 1万+

jpa Repository的常用写法总结

之前项目在xml中写sql,感觉标签有很多,比较灵活;最近在写新项目,使用了jpa,只能在java中写sql了,感觉不太灵活,但是也得凑付用。以下总结下常用入参出参写法。

BHSZZY的博客 2283
上一篇: 快速复现利用Log4j漏洞启动windows计算器
下一篇: 跟着JHipster学做项目 (18) 国际化i18n实现
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值