iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringDataJpa如何使用union多表分页条件查询
  • 855
分享到

SpringDataJpa如何使用union多表分页条件查询

2024-04-02 19:04:59 855人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录如何使用uNIOn多表分页条件查询条件分页踩过的坑分享几个用到的Mysql语法jpa执行原生sql union bug解决如何使用union多表分页

如何使用union多表分页条件查询

当前项目有一个全局搜索的功能,需要涉及到7-8张主表,由于当前项目使用的是Jpa,所以我决定使用原生sql的方式使用union来进行查询,由于对这个框架的不熟悉,被坑了很久,特此记录。

条件

1、在参数列表中,使用@Param注解(例:@Param(“userId”) Long userId)

2、在sql中应该以 :userId 的方式来注入参数(例:person.user_id = :userId),或者用?1 ?2根据参数的顺序来注入也可以,我采用的是第一种

3、sql应该是写在@Query的value中,并且设置 nativeQuery = true

4、如果要设置一个可能为空的值,比如:有一个分类,需要当作条件查询,但是这个值是可能为空的,所以需要在sql中判断,如果为空就不进行筛选。语法其实和在sql中判断是一样的

where IF(:cateGory is not null,a.category = :category is not null,1=1)

分页

1、分页必须加countQuery这个参数,把上面sql价格count就可以

2、传入Pageable,不要传sort,不然会报错,暂时没找到解决方案

例如 select * from a 为你的sql

那么分页应该是

select * from (select * from a) b order by ?#{#pageable}

order by在countQuery里面就不用加了哦

3、返回的是Page<Object[]>,里面content封装的顺序就是你sql查出来的顺序

踩过的坑

1、多表union查询,查询的字段应该是一样的,比如第一张user表查询id,name,sex、第二张address表也必须查询id,name,sex,如果没有这个字段则自己封装返回固定的值,可以为空字符串

2、传入pageable的时候 ?#{#pageable} 必须这样写

分享几个用到的mysql语法

1、判断是否为空,不为空查询时间在传入时间之间的数据

IF(:startTime is not null and :endTime is not null,proc.create_time between :startTime and :endTime,1=1)

这边我在service是判断了结束时间是否为空的,如果结束时间为空,开始时间不为空默认查询一年的数据

2、根据名称模糊查询

proc.content LIKE CONCAT('%',:content,'%')

3、最后根据查出来的总数据对类型筛选

IF(:category is not null,a.category = :category is not null,1=1)

小结一下:

1、其实很简单的分页条件查询,因为不熟悉jpa的语法,导致浪费了很多时间,希望可以帮到更多的人。

2、暂时不知道怎么排序,无论是在pageable中传入sort,还是在sql最后进行排序都会报错,如果有大佬知道的话可以点拨一下。

jpa执行原生sql union bug解决

@Query(value = "SELECT * FROM count_entity where id=-1111 union (SELECT * FROM count_entity where video_name = ?1 AND platfORM ='腾讯视频' ORDER BY click_date DESC LIMIT ?2)"
 + "UNION"
 + "(SELECT * FROM count_entity where video_name = ?1 AND platform ='爱奇艺' ORDER BY click_date DESC LIMIT ?2)"
 + "UNION"
 + "(SELECT * FROM count_entity where video_name = ?1 AND platform ='芒果TV' ORDER BY click_date DESC LIMIT ?2)", nativeQuery = true)

union前面需要连接一个空数据查询,因为union 第一个查询不能用()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringDataJpa如何使用union多表分页条件查询

本文链接: https://www.lsjlt.com/news/140230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringDataJpa如何使用union多表分页条件查询
    目录如何使用union多表分页条件查询条件分页踩过的坑分享几个用到的mysql语法jpa执行原生sql union bug解决如何使用union多表分页...
    99+
    2024-04-02
  • SpringDataJpa怎么使用union多表分页条件查询
    本篇内容介绍了“SpringDataJpa怎么使用union多表分页条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如何使用...
    99+
    2023-06-29
  • mybatis-plus 多表关联条件分页查询
    此处以一对多,条件分页查询为例: 一.表结构: 主表 CREATE TABLE `t_user` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAU...
    99+
    2023-08-20
    mybatis mysql java
  • 使用Spring Data JPA如何实现多条件的分页查询
    使用Spring Data JPA如何实现多条件的分页查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。话不多说,请看代码:public Map<String, Obje...
    99+
    2023-05-31
    spring 分页查询 dat
  • SSH如何实现条件查询和分页查询
    这篇文章将为大家详细讲解有关SSH如何实现条件查询和分页查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、QueryHelper和PageResultQueryHel...
    99+
    2024-04-02
  • 如何使用Mockjs模拟接口实现增删改查、分页及多条件查询
    本篇内容主要讲解“如何使用Mockjs模拟接口实现增删改查、分页及多条件查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Mockjs模拟接口实现增删改查、分页及多条件查询”吧!一、什么...
    99+
    2023-06-30
  • MySQL Union合并查询数据及表别名、字段别名用法分析
    本文实例讲述了MySQL Union合并查询数据及表别名、字段别名用法。分享给大家供大家参考,具体如下: union关键字 SELECT s_id, f_name, f_pr...
    99+
    2024-04-02
  • mysql多个条件如何查询
    这篇文章主要讲解了“mysql多个条件如何查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql多个条件如何查询”吧! 方...
    99+
    2024-04-02
  • 如何实现多条件查询
    这篇文章主要讲解了“如何实现多条件查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现多条件查询”吧! 而在对用户进行查...
    99+
    2024-04-02
  • linq多条件查询怎么使用
    本篇内容介绍了“linq多条件查询怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linq多条件查询,当条件为NUll时不做查询,只有...
    99+
    2023-06-17
  • 使用Mockjs模拟接口实现增删改查、分页及多条件查询
    目录一、什么是Mock?二、使用Mock有什么好处三、安装Mock四、效果图五、使用Mock模拟接口实现增删改查、分页、多条件查询总结一、什么是Mock? mock官网 mock测试...
    99+
    2024-04-02
  • Layui如何实现多条件查询
    这篇文章主要介绍了Layui如何实现多条件查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做一个档案系统,发现字段超多带分页的多条件查询(分页需要后端分页,传page给...
    99+
    2023-06-25
  • sql多条件查询如何优化
    优化 SQL 多条件查询可以通过以下几个方面来实现:1. 索引优化:确保查询涉及的字段都有相应的索引。可以使用 EXPLAIN 或者...
    99+
    2023-08-22
    sql
  • 使用JPA+querydsl如何实现多条件动态查询
    目录JPAquerydsl多条件动态查询介绍一下querydsl看源码springdataJPA和querydsl什么是SpringDataJPA?什么是QueryDSL?@Mapp...
    99+
    2024-04-02
  • 使用Mybatis如何实现多个控制条件查询
    目录实现多个控制条件查询扩展知识实现多个条件简单查询数据库的字段名和实体类的属性名不一致时实现多个条件复杂查询MyBatis条件查询总结1.if条件语句2.choose(whenot...
    99+
    2024-04-02
  • 使用mongoTemplate实现多条件加分组查询方式
    目录mongoTemplate实现多条件查询mongoTemplate分组查询的坑先来一个常见的错误信息: Due to limitations of the com.mongodb...
    99+
    2024-04-02
  • linq动态条件查询如何使用
    本篇内容主要讲解“linq动态条件查询如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linq动态条件查询如何使用”吧!1,linq动态条件之构造表达式树private Expr...
    99+
    2023-06-17
  • Pipeline如何处理Laravel多条件查询
    本篇内容介绍了“Pipeline如何处理Laravel多条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!pipeline是Larave...
    99+
    2023-06-26
  • mysql多条件查询会使用索引吗
    mysql多条件查询会使用索引,取决因素有:1、索引的选择性,指索引中具有唯一或较小重复值的比例;2、索引的覆盖度,指索引中包含了查询所需的所有列,从而避免了对实际数据行的访问,提高查询性能;3、查询的顺序和条件结合,根据查询的具体情况进行...
    99+
    2023-07-25
  • Bootstrap中如何处理树列表条件和查询条件
    这篇文章将为大家详细讲解有关Bootstrap中如何处理树列表条件和查询条件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Boostrap框架中,很多地方需要使用bootstrapTable表格插件和j...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作