JPA(4) JPQL一些简单的查询语法

JPQL --> JPA Query Language --> JPA的查询语句    (另外HQL:Hibernate的查询语句)
JPQL本质:JPA通过antlr-2.7.7.jar将JPQL编译成sql并且封装执行的。  
JPQL和SQL区别??               -->  它们查询的关键字都是一样的,但JPQL是面向对象的(JPQL只能写java的类名和属性名)

JPQL书写规则

JPA的查询语言,类似于sql
   ①里面不能出现表名,列名,只能出现java的类名,属性名,区分大小写
   ②出现的sql关键字是一样的意思,不区分大小写
   ③不能写select *  要写select 别名

JPQL查询语法:    ---(面向对象)

查询所有用户【查询实体类型】:

"select o from User o"   --> User:类名  o:别名

查询所有用户的姓名和所属部门名称 【查询特定属性】

方式①:"select o.name,o.department.name from User o"  
      注意:此时接收数据 类型用Object[]数组   --(涉及到查询出多个类里面数据的时候一般都需要使用Object[]数组接收数据!) 
        ex:List<Object[]> resultList = query.getResultList();
方式②(new一个构造器):"select new User(o.name,o.department.name) from User o"  
     注意:此时User类里面需要加无参构造和下面
     public User(String name, String departmentName) {
            this.name = name;
            this.department = new Department();
            this.department.setName(departmentName);
     }

查询出所有在成都和广州工作的人【查询结果过滤】:

方式①:"select o from User o where o.department.city='成都' or o.department.city='广州'
               --> User类里面关联着Department类,Department类里面有city字段
方式②:String jpql = "select o from User o where o.department.city=? or o.department.city=?
   Query query = entityManager.createQuery(jpql);
   query.setParameter(1, "成都");  //为JPQL的?设置值 【注意:这里是从1开始计算的】
   query.setParameter(2, "广州");
方式③:"select o from User o where o.department.city=?1 or o.department.city=?2"
   Query query = entityManager.createQuery(jpql);
 //query.setParameter(1, "成都");
 //query.setParameter(2, "广州");
   query.setParameter(1, "成都").setParameter(2, "广州");
方式④:"select o from User o where o.department.city=:city1 or o.department.city=:city2"
   Query query = entityManager.createQuery(jpql);
   query.setParameter(1, "成都").setParameter(2, "广州");

查询出所有人信息,按照月薪排序【查询排序】

"select o from User o order by o.salary desc" //desc降序  asc升序

查询出所有人信息,按照部门编号排序【使用关联对象属性排序】

"select o from User o order by o.department.sn
          --> User类里面关联着Department类,Department类里面有sn编号字段

查询出在春熙路和武侯街上班的用户信息【使用IN】

"select o from User o where o.department.street in(?1,?2)"
   query.setParameter(1, "春熙路").setParameter(2, "武侯街");

查询出工资在5000-6000的人【使用BETWEEN..AND..】

"select o from User o where o.salary between ?1 and ?2"

查询出姓名包含er或者en的人【使用LIKE】

"select o from User o where o.name like ?1 or o.name like ?2"
   query.setParameter(1, "er").setParameter(2, "en");

查询出有用户的部门【distinct去重】

"select distinct o.department from User o"

查询出有人的部门【size】   --注意:在JPQL,所有集合都有一个size属性

 "select o from Department o where o.users.size>0"
   --> Department类里面用list集合 private List<User> users = new ArrayList<>(); 

查询出部门信息,按照部门的用户人数排序【使用函数排序】

"select o from Department o order by o.users.size desc"

查询出没有人加入的部门【对集合使用size】

"select o from Department o where o.users.size=0"

查询所有人的姓名和所属部门名称【查询特定属性】

"select o.id,o.name,d.name from User o left join o.department d"

查询出市场部的人员信息及电话:

 "select e,p from Phone p join p.user e join e.department d where d.name='市场部'"  

查询出各个部门人员的平均工资和最高工资【使用聚集函数GROUP】

 "select o.department.name,avg(o.salary),max(o.salary) from User o group by o.department.name"

查询出各个部门参与人数报表:

方式①:"select d,count(e) from Department d left join d.users u group by d"
方式②:"select d,d.users.size from Department d"

查询出大于平均工资的人员信息【子查询】

"select o from User o where o.salary > (select avg(salary) from User )"

注意事项:

①from后面的是一个类名
②如果涉及到查询出的几个值不是对象需要使用Object[]数组接收数据!
③jpql支持 select new User(..) from ...  
④where条件传参时
        ?,?   --> 从1开始计算
        ?1,?2 --> 自己定义顺序
        :name1,:name2 --> 自己取名字
⑤ like的时候  ?1   --> query.setParameter(1, "er") --> "%er%" 
⑥JPQL中所有集合都有 size属性
⑦JPQL关联(JOIN/LEFT JOIN)
     sql:select * 表1 join 表2 on 条件
     jpql:两个法则 --> 1.JPQL自己会消除笛卡尔积不写on子句    2.关联  --> 模型 模型的别名 join 写前面模型别名.对象属性

分页查询:

方式①:
String jpql = "select o from User o";
Query query = entityManager.createQuery(jpql);
//List<Employee> resultList = query.getResultList().subList(0, 5); //  -->假分页:从第几条开始,到第几条结束
//query.setFirstResult(0); //从第几条开始
//query.setMaxResults(5);  //第页查询多少条数据
query.setFirstResult(0).setMaxResults(5);//可理解为sql的 limit 0,5   -->真分页方式②:
String jpql = "select count(o) from User o";  //它查询到的结果有且只有一个值
Query query = entityManager.createQuery(jpql);
//System.out.println(query.getResultList());
//System.out.println(query.getResultList().get(0));
Long count = (Long) query.getSingleResult();

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143474.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

6月3号抖音显示服务器维护中,抖音搜索功能升级维护 期间无法进行用户搜索

这两天有很多小伙伴说抖音上的搜索功能搜不到人了&#xff0c;这是怎么回事呢&#xff1f;其实&#xff0c;这两天&#xff0c;抖音的搜索功能正在升级维护&#xff0c;所以导致搜索功能暂时无法使用。 类别&#xff1a;影音娱乐 大小&#xff1a;210.36M 语言&#xff1a…

java抖音获取用户信息失败_为什么抖音用id搜不到用户?抖音用id搜不到用户的原因与解决方法...

在抖音短视频上&#xff0c;网友可以通过抖音id来搜索指定的抖音用户&#xff0c;并添加为好友&#xff0c;不过&#xff0c;这几天&#xff0c;不断有网友反映一个问题&#xff0c;那就是&#xff1a;抖音用id搜不到用户&#xff0c;那么&#xff0c;为什么抖音用id搜不到用户…

【已解决】抖音如何取消关注已注销的账户

文章目录 1. 按2. 操作步骤 1. 按 我们有时候会发现自己的关注列表里有一些用户显示该用户已注销&#xff0c;这时我们想取消关注&#xff0c;但是却发现没有取消关注按钮&#xff0c;怎么办呢&#xff1f;其实我们可以记下这个账号的名字&#xff0c;然后到关注列表的最上方搜…

最近抖音上虚拟元宇宙项目-猜歌名,代码解析

介绍一下最近抖音上元宇宙虚拟项目猜歌名&#xff0c;直播游戏。用户互动猜歌名&#xff0c;30秒后自动切歌。 CSDN项目源码&#xff1a;https://download.csdn.net/download/u010978757/85326344 类似的弹幕互动游戏除了猜歌名&#xff0c;还有挤地铁、广场舞和舞厅蹦迪的&a…

抖音小店无货源是不是在割韭菜?

哈喽&#xff0c;大家好&#xff0c;我是布丁。 最近很多小伙伴私信布丁&#xff0c;问抖音小店无货源是不是在割韭菜? 今天布丁腾出了些时间&#xff0c;来和小伙伴们分享一下抖音小店无货源。希望能帮助小伙伴解决问题。 抖音小店 抖音小店依托抖音&#xff0c;所以会获得…

抖音快手短视频如何快速上热门

抖音快手短视频怎么上热门?这是许多抖友的一个烦恼! 抖音快手短视频怎么上热门?这也是许多都有的一个梦想! 抖音快手短视频怎么火&#xff0c;抖音快手短视频怎么上热门&#xff0c;相信玩抖音快手短视频的人都想知道其中的技巧。今天我们就把最详细的教程分享给大家。 下面分…

抖音小店无货源怎么做?具体步骤讲解,经验分享

哈喽&#xff0c;大家好&#xff0c;我是布丁。 废话不多说&#xff0c;直接上干货。 抖音小店无货源是什么&#xff1f; 抖音小店就是在抖音上开一家小店&#xff0c;抖音小店是一个电商平台&#xff0c;无货源是一种操作模式。 无货源模式就是在网上采集其他店铺的商品&a…

抖音快手短视频剪辑工具

新媒体短视频运营中短视频制作是较为重要的一环&#xff0c;而短视频制作时选择一款适合的短视频剪辑工具会达到事半功倍的效果&#xff0c;你的短视频需要深入用户内心&#xff0c;契合短视频自身的特色和要求&#xff0c;否则吐血写的脚本、拍完视频信心满满准备剪视频打开电…

抖音快手短视频平台营销技巧

随着碎片化的加剧&#xff0c;短视频平台依靠其时长短、数据流量的优势持续吸引大量用户。而今年的疫情危机&#xff0c;给社会带来了非常大的影响。在这次疫情中&#xff0c;在承担社会责任的同时&#xff0c;抖音快手短视频平台的逆转营销也是做得很成功&#xff0c;这种平台…

抖音快手短视频推广方式

之前的快手短视频主要集中在三四线城市以及农村等消费力不强的用户群体上&#xff0c;没能有力的抓住主流用户的眼光;如今在一二线城市大放异彩的抖音短视频让厂商们再也无法无视短视频对于用户的吸引力。有了短视频这一全新渠道&#xff0c;怎么更为有效的利用渠道成了各级厂商…

抖音短视频运营指南

最初在中国的视频分享应用程序刚刚在全球激增&#xff0c;成为了2019年全球青年最热的地方。而且&#xff0c;在人群中&#xff0c;品牌营销人员紧跟它的步伐。但是抖音并不是您常规的即插即用营销平台&#xff0c;因为它的用户具有很高的洞察力&#xff0c;任何感觉不到“真实…

当年轻人开始拼命戒抖音

原创 | 开菠萝财经 作者 | 金玙璠 编辑 | 瑟曦 “再玩一次就戒掉抖音。” “戒抖音第X天。” “有没有戒掉抖音的好方法&#xff1f;我又‘复吸’了。” 就像不知道何时对抖音上瘾一样&#xff0c;不知道从什么时候起&#xff0c;越来越多年轻人开始寻求戒掉抖音的方法&#xf…

云媒易:抖音短视频推广小技巧汇总

很多企业和品牌做短视频推广的关键是提高自身形象和产品曝光度&#xff0c;让更多的消费者认识到自己的品牌和产品&#xff0c;甚至进一步将其转化为粉丝和客户。那怎么去做短视频推广&#xff0c;这些技巧请你先明白。 1、做短视频要有的3种心态。第一&#xff0c;all in心态&…

抖音直播新号怎么起号?抖音直播间不进人怎么办?

对于抖音直播新号起号来说&#xff0c;最大的困扰就是直播间不进人、人来了留不住、场观高但是没转化&#xff0c;那么如何才能让抖音直播间顺利渡过冷启动期呢&#xff1f;抖音直播间起号的3个小技巧看好了&#xff01; 1.快速打标签&#xff0c;找到精准目标人群 抖音标签是…

抖音快手短视频功能解读

很多人玩抖音快手都不知道抖音快手里面有哪些功能&#xff0c;别人一天到晚打开抖音快手&#xff0c;出了一直往下滑这刷抖音快手短视频&#xff0c;都不知道抖音快手还有这些功能权限&#xff0c;抖音快手短视频功能解读带着大家一起扫盲一下抖音快手的功能权限。 dou功能&…

实操揭秘:抖音短视频常见问题解答(收藏必备):国仁楠哥

到底是为什么我们的抖音短视频播放量就是起不来呢&#xff1f; 难道真的是玄学吗&#xff1f;其实并没有那么神奇&#xff0c;播放量起不来很有可能是因为运营者没有养号。那么下面给大家深挖了16条抖音常见的各种问题&#xff0c;一起来看看吧。 01 、自己的账号能不…

抖音运营方针策略

抖音&#xff0c;是一款可以拍短视频的音乐创意短视频社交软件&#xff0c;该软件于2016年9月上线&#xff0c;是一个专注年轻人音乐短视频社区平台。用户可以通过这款软件选择歌曲&#xff0c;拍摄音乐短视频&#xff0c;形成自己的作品。 抖音运营是一款社交类的软件&#xf…

详解抖音壁纸号的具体玩法,变现方法容易吗?

去年底&#xff0c;我实打实做了俩抖音壁纸号&#xff0c;把整套玩法亲自摸索了一遍&#xff0c;为此我也花费了 1299 元成本&#xff0c;主要花在了抖音账号认证和视频剪辑软件的会员开通。 &#xff08;更多精彩干货请关注共众号&#xff1a;萤火宠&#xff09; 其实抖音壁…

短视频运营学完能做自己的抖音吗

成功有捷径吗?如果赚钱等于成功&#xff0c;那跟随大环境的市场发展趋势就是通往成功的捷径。如果要说当下什么是市场的趋势&#xff0c;赚钱的风口&#xff0c;一定很多人会说是短视频。随着移动互联网的发展&#xff0c;短视频作为一种内容形式&#xff0c;迅速席卷全国各地…

全栈仿抖音小程序--登陆、注册、注销模块

后端部分&#xff1a; 注册、登录接口开发 注册 ,就是向数据库里加数据&#xff0c;当然是要之前不存在。否则注册失败 两个主要接口&#xff1a; Transactional(propagation Propagation.REQUIRED)Overridepublic boolean queryUserNameIsExist(String username) {Users…