JPQL详解

#

前提

最近在改bug的时候发现了自己的缺点,在改前端bug的时候非常顺利顺手。但是在改后端bug的时候如果遇到不是太难的问题还可以解决,但是一到难点感觉自己就懵逼! 所以讲解了关于JPQl相关内容

#

JPA

在说jpql之前必须要说一下什么是JPA,否则在后续学习的时候,你会弄混的。JPA是一种规范,什么是规范呢,规范就是一个钥匙可以开这把锁。一般对于规范来说我们都是用接口,如果有人要我们则实现我们的接口就可以了,所以我们针对的面向接口编程。。另外再说一个新词叫做ORM。他表示什么呢?Object·/Relation Mapping 对象/关系数据库映射,他完成的是面向对象的编程语言到关系型数据库的映射,所以你可以理解为ORM其实就是应用程序和数据库的桥梁。

JPA规范本质上就是一种ORM规范。


下面说一下关于JPA规范和JPA实现他们之间的关系,以及JPQL和HIbernate等之间的关系。其实用一张图就可以说明他们之间的关系
这里写图片描述


##

JPA从哪来,名词有那些

上面基本上都是在讲解什么是jpa和jpa实现的其他技术有哪些,他们之间的概念,下面介绍的是JPA来自于哪里?


JPA是在Ejb3出现的时候同时出现的,他的出现其实上代替了我们EJB2中的实体bean,但是JPA并不属于我们EJB3规范的内容,他是一个独立的规范,他的应用场景不仅仅是在javaEE中可以用,而且也可以在javase中可以。


名词介绍:
1。实体:实体就是一个普通的POJO,ps当你看到POJO的时候一定不要感觉很难,POJO其实就是一个普通的java类而已,只是名字高大尚了而已。实体的作用就是辅助我们orm.xml映射文件或者是Annotation,orm.xml是针对hibernate的,Annotation针对的Ejb注解形式的。实体和底层数据库之间进行映射的。
2。EntityManager:上面所说的实体是与我们数据库映射的,但是没有起到持久化的作用,只有用上EntityManager的实体进行操作的时候才会有持久化能力,什么是持久化能力呢?下面的博客链接讲解了

https://blog.youkuaiyun.com/sunyadongwanghbjm/article/details/1765073

3。JPQL查询:Hibernate提供的是HQL查询,而JPA提供的是JPQL查询语言这里写图片描述



#

JPQL

前面的前提终于讲完了,下面我们来说一下关于JPQL的内容

##

JPQL与Sql比较

jpql与SQL的区别就是SQL是面向对象关系数据库,他操作的是数据表和数据列,而jpql操作的对象是实体对象和实体属性


##

JPQL 语句基本格式

下面是JPQL的基本格式,根据基本格式我们执行jpql语句

select 实体别名.属性名, 实体别名.属性名 from 实体名 as 实体别名 where 实体别名.实体属性 op 比较值

具体事例

select p.name from book as p 

在写语句的时候我们可能需要使用到参数,如果是位置参数使用“?” ,如果是参数则使用 ":XX "


##

JPQL 查询基本格式

jpql的查询语句设计非常简单。主要是由于Query接口来完成的,而我们的Query接口是由EntityManager创建出来的。ps上面提过什么是EntityManage。

  1. Query createNamedQuery(String name):创建查询的名称来创建一个命名查询,使用sql和jpql都可以
  2. Query createNativeQuery(String SQLString)根据的原生的sql语句查询
  3. QuerycreateQuery(String jpqlString)根据指定的JPQL语句创建一个查询

jpql传参数我们使用的Query setParmeter(String name, Object value),还有其他是日期类型的,大家可以在查阅


##

JPQL 执行基本格式

当我们的参数和语句完事之后我们就应该执行,对于jpql执行分为以下几种

  1. List getResultList()执行JPQL的select语句,并且返回的是list集合
  2. Object getSingleResult()执行返回的那个结果的select语句
  3. int executeupdate()表示执行批量的删除和更新
  4. Query setFirstResult(int startPosition)设置查询结果从第几条记录开始
  5. Query setMaxResults(int maxResult)表示设置查询最多返回几条语句

#

总结

大概内容就是这样了,后面还需要不断的去理解。我们一起加油啊!
评论 75
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雪芬-ghqr-264962

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值