使用Jpql实现在JPA中的复杂查询
java
it书童
2020-11-19 09:45:02
0赞
0踩
128阅读
0评论
JPQL全称Java Persistence Query Language
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象的表达式,将SQL语法和简单查询语义绑定在一起
使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。
其特征与原生SQL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。
查询全部
@Test
public void testFindAll() {
// 创建实体管理类
EntityManager em = JpaUtils.getEntityManager();
// 获取事务对象
EntityTransaction tx = em.getTransaction();
// 开启事务
tx.begin();
// 查询全部
String jpql = "from Customer";
Query query = em.createQuery(jpql);
List list = query.getResultList();
for (Object obj : list) {
System.out.println(obj);
}
// 提交事务
tx.commit();
// 释放资源
em.close();
}
排序
@Test
public void testOrders() {
EntityManager entityManager = JpaUtils.getEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
String jpql = "from Customer order by custId desc";
Query query = entityManager.createQuery(jpql);
List list = query.getResultList();
for (Object obj : list) {
System.out.println(obj);
}
tx.commit();
entityManager.close();
}
统计条数
@Test
public void testCount() {
EntityManager entityManager = JpaUtils.getEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
String jpql = "select count(custId) from Customer";
Query query = entityManager.createQuery(jpql);
Object result = query.getSingleResult();
System.out.println(result);
tx.commit();
entityManager.close();
}
分页
@Test
public void testPaged() {
EntityManager entityManager = JpaUtils.getEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
String jpql = "from Customer";
Query query = entityManager.createQuery(jpql);
// 超始索引
query.setFirstResult(0);
// 每页条数
query.setMaxResults(2);
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
}
tx.commit();
entityManager.close();
}
条件查询
@Test
public void testCondition() {
EntityManager entityManager = JpaUtils.getEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
String jpql = "from Customer where custName like ? ";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, "%卡罗%");
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
}
tx.commit();
entityManager.close();
}
- 上一篇: 封装 Jpa 工具类以及实现增删改查
- 下一篇: Spring Data JPA 入门

关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/829
精品付费
这一次,真正掌握composer
1509
0
个人开发者通过payjs接入微信支付
2583
0
相关推荐
java 变量与常量
150
0
Java 自定义异常
182
0
Java Lambda 表达式入门介绍
157
0
Java 实现递归
175
0
Java 对字节流的输入输出处理
160
0
Java JDBC 入门详解
151
0
Mybatis 一级缓存
152
0
springboot 整合连接池
160
0
zuul 与 Eureka 结合
102
0
Thread和Runnable有什么关系
117
0
如何实现处理线程的返回值
114
0
方法引用与构造器引用
152
0
java注解入门
131
0
java对象引用的序列化
126
0