4.JPA之JPQL用法简介

开篇广告
自己开发的淘宝领券网站:q.hayye.cn(手机打开)
要说特色,应该没有,硬要说的话就是没广告、没推送,简单好用。
前端开源地址:https://gitee.com/hayye/tbq
后端不开源……
QQ群
欢迎大家加群讨论技术,不定时也会有淘宝神券发放!


正文开始

简介

JPQL语法基本与SQL一直,不同点在于SQL操作数据库表,而JPQL操作实体模型。
JPQL是一种独立于平台的查询语言,简单而强大。JPA会在执行时将JPQL自动转换为对应的SQL,可做到兼容任何类型数据库。

使用

看下面例子:
语法与SQL几乎保持一致,需要注意的是,jpql操作对象,所以Book b相当于创建了一个Book类的对象b,搜索字段、条件判断等都需要适用对象b完成。
传参方法有两种:
一种是例子中的 ?1 这种(?+数字)的形式;
另一种就是 :id 这种(:+参数名)的形式;
数字形式需要注意要从1开始,参数名下面例子会有示例。

String jpql="select b from Book b where b.id = ?1";
Query query = entityManager.createQuery(jpql);
query.setParameter(1,id);
Book book = (Book) query.getResultList().get(0);

上面的例子是普通的方法实现jpql查询,还有一种预查询方法通过注解实现。

@NamedQuery
@Entity
@NamedQuery(name = "selectById",query = "select b from Book b where b.id = :id")
public class Book {
    ...
}

在实体类上方使用@NamedQuery注解,定义name和query即可。调用则使用createNamedQuery方法即可

Query query = entityManager.createNamedQuery("selectById");
query.setParameter("id",1);
Book book = (Book) query.getResultList().get(0);

此例中使用了:id形式的传参方法


附:Demo源码 https://github.com/hayye/JPADemo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值