欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSQL查询

程序员文章站 2022-05-07 11:54:13
JSQL 其特征与原生soL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。 sql:查询的是表和表中的字段 jpql:查询的是实体类和类中的属性 查询全部 >> getResultList:直接将查询结果封装为list集合 sq1:SELECT * FROM cst_cust ......

jsql

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

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

 

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

    sq1:select * from cst_customer

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

 1 package cn.itcast.test;
 2 import cn.itcast.utils.jpautils;
 3 import org.junit.test;
 4 
 5 import javax.persistence.*;
 6 import java.util.list;
 7 /**
 8  * 测试jpql查询
 9  */
10 public class jpqltest {
11     /*
12      *查询全部
13      *jsql:from cn.itcast.domain.customer  (包名可以省略)
14      *sq1:select * from cst_customer
15      */
16     @test
17     public void testfindall() {
18         //1.获取entitymanager对象
19         entitymanager em = jpautils.getentitymanager();
20         //2.开启事务
21         entitytransaction tx = em.gettransaction();
22         tx.begin();
23         //3.查询全部
24         string jpql = "from customer";
25         //调用em.createquery(jpql)先创建一个对象query,接收一个jsql语句
26         //创建query查询对象,query对象才是执行jqp1的对象
27         query query = em.createquery(jpql);
28         //发送查询,并封装结果集
29         list list = query.getresultlist();
30         //遍历list并打印
31         for (object o : list) {
32             system.out.println(o);
33         }
34         //4.提交事务
35         tx.commit();
36         //5.释放资源
37         em.close();
38     }}
  • 使用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

 

 1 @test
 2     public void testpage() {
 3         //1.获取entitymanager对象
 4         entitymanager em = jpautils.getentitymanager();
 5         //2.开启事务
 6         entitytransaction tx = em.gettransaction();
 7         tx.begin();
 8         //3.查询全部
 9         string jpql = "from customer";
10         //根据jsql语句创建query查询对象
11         query query = em.createquery(jpql);
12 
13         //起始索引
14         query.setfirstresult(0);
15         //每页查询的条数
16         query.setmaxresults(2);
17 
18         //发送查询,并封装结果集
19         list list = query.getresultlist();
20         //遍历list并打印
21         for (object o : list) {
22             system.out.println(o);
23         }
24         //4.提交事务
25         tx.commit();
26         //5.释放资源
27         em.close();
28     }}

 

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

  sq1:select * from cst_customer where cust_name like ?
  jpql :  from customer where custname like ?

1         //1.查询全部
2         string jpql = "from customer where custname like ? ";
3         //2.根据jsql语句创建query查询对象
4         query query = em.createquery(jpql);
5 
6         //3.对参数赋值--占位符参数
7         //第一个参数:占位符的索引位置(从1开始),第二个参数:取值
8         query.setparameter(1,"黑马%");