Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

JSQL查询

小中配奇 2019-09-04 15:09:00 阅读数:20 评论数:0 点赞数:0 收藏数:0

JSQL

其特征与原生soL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。

  • sql:查询的是表和表中的字段
  • jpql:查询的是实体类和类中的属性

 

查询全部   >> getResultList:直接将查询结果封装为list集合

sq1:SELECT * FROM cst_customer

jsql:from cn.itcast.domain.Customer (包名可以省略)

 package cn.itcast.test;
 import cn.itcast.utils.JpaUtils;
 import org.junit.Test;

import javax.persistence.*;
 import java.util.List;
 /**
 * 测试Jpql查询
 */
public class JpqlTest {
 /*
 *查询全部
  *jsql:from cn.itcast.domain.Customer (包名可以省略)
  *sq1:SELECT * FROM cst_customer
 */
 @Test
 public void testFindAll() {
 //1.获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
 //2.开启事务
EntityTransaction tx = em.getTransaction();
  tx.begin();
 //3.查询全部
String jpql = "from Customer";
 //调用em.createQuery(jpql)先创建一个对象query,接收一个jsql语句
 //创建Query查询对象,query对象才是执行jqp1的对象
Query query = em.createQuery(jpql);
 //发送查询,并封装结果集
List list = query.getResultList();
 //遍历list并打印
for (Object o : list) {
  System.out.println(o);
  }
 //4.提交事务
 tx.commit();
 //5.释放资源
 em.close();
  }}
  • 使用jpql查询,统计客户的总数  >> getSingleResult:得到唯一的结果集

sq1:SELECT COUNT(cust_id)FROM cst_customer

jpql: select count(custId)from Customer

 

  • 分页查询  

    >> getResultList:直接将查询结果封装为list集合

sq1:select*from cst_customer limit?,?   只写2,默认是0,2
jqp1:from Customer

 

 @Test
 public void testPage() {
 //1.获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
 //2.开启事务
EntityTransaction tx = em.getTransaction();
  tx.begin();
 //3.查询全部
String jpql = "from Customer";
 //根据jsql语句创建Query查询对象
Query query = em.createQuery(jpql);

//起始索引
query.setFirstResult(0);
 //每页查询的条数
query.setMaxResults(2);

//发送查询,并封装结果集
List list = query.getResultList();
 //遍历list并打印
for (Object o : list) {
  System.out.println(o);
  }
 //4.提交事务
 tx.commit();
 //5.释放资源
 em.close();
 }}

 

案例:查询客户名称以“黑马”开头的客户  >> getResultList:直接将查询结果封装为list集合

sq1:SELECT * FROM cst_customer WHERE cust_name LIKE ?
jpql :  from Customer where custName like ?

 //1.查询全部
String jpql = "from Customer where custname like ? ";
 //2.根据jsql语句创建Query查询对象
Query query = em.createQuery(jpql);

//3.对参数赋值--占位符参数
 //第一个参数:占位符的索引位置(从1开始),第二个参数:取值
 query.setParameter(1,"黑马%"); 

 

版权声明
本文为[小中配奇]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/xiaozhongfeixiang/p/11459276.html