若依框架ruoyi前后端实现自定义分页功能(ES分页查询)

这篇具有很好参考价值的文章主要介绍了若依框架ruoyi前后端实现自定义分页功能(ES分页查询)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、分页需求

若依ruoyi框架主要针对Sql进行了分页集成,像平时别的一些数据库或者中间件的分页,则需要自己实现.
本文主要使用ES的分页查询为例,展示前后端的基本操作,原理可以类推到其他中间件分页查询上.文章来源地址https://www.toymoban.com/news/detail-522238.html

2、vue前端保持不变

//...
//前端逻辑基本不变,使用原来的组件即可
<pagination
  v-show="total>0"
  :total="total"
  :page.sync="queryParams.pageNum"
  :limit.sync="queryParams.pageSize"
  @pagination="getList"
/>
//...

3、controller组装前端所需分页对象

/**
 * 查询XX列表
 * query: 查询条件对象
 */
@PreAuthorize("@ss.hasPermi('xxx:xxx:list')")
@GetMapping("/list")
public TableDataInfo list(Query query) {
	//startPage();
	//pageNum和pageSize的设置由query传入进行处理,传到serviceImpl方法中
	
    Page<TestVo> pageInfo = testService.selectMyPage(query);
    List<TestVo> list = pageInfo.getContent();//ES的分页结果list对象

	//getDataTable(list);
	//将原来的getDataTable()方法拿出来进行rows和total的赋值,再传给前端
    TableDataInfo rspData = new TableDataInfo();
    rspData.setCode(HttpStatus.SUCCESS);
    rspData.setMsg("查询成功");
    rspData.setRows(list);
    rspData.setTotal(pageInfo.getTotalElements());//ES的分页数据总数
    return rspData;
}

4、serviceimpl实现分页逻辑

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;

/**
* 查询热词管理列表
*/
@Override
public Page<TestVo> selectMyPage(Query query){
	//接受前端传过来的分页参数
    Integer pageNum = query.getPageNum();
    Integer pageSize = query.getPageSize();

    if(pageNum<1 || pageSize<1){
        throw new RuntimeException("分页参数需从1开始");
    }

    //组装查询条件 must类似and匹配到所有字段后进行组合查询
    BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
    if(StringUtils.isNotBlank(query.getCol1())){
        queryBuilder.must(termQuery("col1", query.getCol1()));
    }
    if(StringUtils.isNotBlank(query.getCol2())){
        //类似like的操作,针对不能分词的字段进行模糊查询,数据量大不推荐,性能不友好
        queryBuilder.must(wildcardQuery("col2", "*"+query.getCol2()+"*"));
    }

    NativeSearchQuery build = new NativeSearchQueryBuilder()
            .withQuery(queryBuilder)
            .withPageable(PageRequest.of(pageNum-1, pageSize))
            .build();
    log.info("列表查询的语句:{}", build.getQuery().toString());

    SearchHits<TestVo> search = elasticsearchRestTemplate.search(build, TestVo.class);
    SearchPage<TestVo> page = SearchHitSupport.searchPageFor(search, build.getPageable());

    //高亮结果集,也可以用page.getHighlightFields()获取
    List<TestVo> list = new ArrayList<>();
    for (SearchHit<TestVo> each : page) {
        TestVo vo = each.getContent();
        list.add(vo);
    }
    //组装分页对象 这里主要是ES返回的分页对象
    Page<TestVo> pageInfo = new PageImpl<>(list, build.getPageable(), search.getTotalHits());
    return pageInfo;
    
    //原来的mapper查询如下
	//return testMapper.selectTestList(vo);
}

到了这里,关于若依框架ruoyi前后端实现自定义分页功能(ES分页查询)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 若依框架列表分页功能失效解决办法

    在近期针对若依框架进行开发的过程中,发现通过controller层对查询出的列表数据进行修改封装(将部分数据字段做了码值映射处理,整体条数未发生变化)后,分页功能会出现问题:查询列表的时候明明有上百条数据,但却显示total只有10条,且只有一页。经过debug分析发现主

    2024年02月16日
    浏览(33)
  • 基于若依的ruoyi-nbcio流程管理系统自定义业务撤回功能的修复

    更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H

    2024年01月18日
    浏览(35)
  • 基于若依的ruoyi-nbcio流程管理系统修复自定义业务表单的收回功能

    更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H

    2024年01月18日
    浏览(36)
  • 3.若依前后端分离版开发用户自定义配置表格功能

    一、背景 在项目上线测试的时候,关于同一个界面的表格,不同的用户会出现不同的字段排列需求,有些用户希望把A字段排在最前面,有些用户则希望A字段不显示。针对这种情况,开发一个表格自定义配置的功能,每个用户根据自己的需求自己去设定表单字段的显示、隐藏

    2024年02月12日
    浏览(31)
  • 若依RuoYi-Cloud框架前端vue安装时报 core-js/modules/es.error.cause.js错误怎么解决?

    如下所示,新手安装若依RuoYi-Cloud框架前端vue时会报如下错误: ERROR Failed to compile with 7 errors This dependency was not found: core-js/modules/es.error.cause.js in ./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js, ./src/directive/permission/hasRole.js and 5 others To install it, you can run: npm install --save core

    2024年02月12日
    浏览(35)
  • 【若依后管框架(前后端分离版)】 如何部署若依以及添加自己的功能模块和菜单

    【若依后管框架(前后端分离版)】 如何添加自己的功能模块以及菜单 【文章开始之前,先说一句,若依牛逼!】 1 若依框架简介 RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜

    2024年02月05日
    浏览(44)
  • 若依数据分页功能的实现

    目录 一、问题引出  二、原理分析: ①前端部分: ②后端部分: 三、总结 我们可以注意到若依界面中处理大量数据时,一个页面展示不过来时,会采纳多页处理的方法。 此时我们拿若依里边的系统管理中的日志管理的登录日志浏览分页的效果。 我们分别从前后端两方面去

    2024年01月17日
    浏览(31)
  • 若依整合Easy-Es实现文章列表分页查询

    Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比M

    2024年01月16日
    浏览(32)
  • 若依RuoYi-Vue项目部署(前后端分离版本)

    RuoYi 是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。 若依是作者给女儿取的名字(寓意:你若不离不弃,我必生死相依) 在线体验 若

    2023年04月08日
    浏览(39)
  • [ RuoYi ] 若依前后端分离 RuoYi-Vue 项目 war 包 Tomcat 项目部署

    Apache Tomcat® - Apache Tomcat 9 Software Downloads https://tomcat.apache.org/download-90.cgi Tomcat的主要特点和功能包括: ①Servlet和JSP容器:Tomcat作为一个Web服务器,可以解释执行Java Servlet和JSP代码,处理HTTP请求和响应,生成动态的Web页面。 ②独立性和易用性:Tomcat是一个独立的服务器,可以

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包