JSQL查询
程序员文章站
2022-08-02 09:41:09
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,"黑马%");