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 阅读数:12 评论数: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