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,"黑马%");

JSQL查询的更多相关文章

  1. SpringDataJpa入门案例及查询详细解析

    SpringDataJpaSpring Data JPA 让我们解脱了DA0层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA+ORM(如:h ...

  2. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  3. UWP 律师查询 MVVM

    APP简介 律师查询是基于聚合数据的律师查询接口做的,这个接口目前处于停用状态,但是,由于我是之前申请的,所以,还可以用,应该是无法再申请了. 效果图 开发 一.HttpHelper 既然是请求接口的 ...

  4. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  5. ASP.NET Aries 入门开发教程4:查询区的下拉配置

    背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...

  6. ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区

    前言: Aries框架毕竟是开发框架,所以重点还是要写代码的,这样开发人员才不会失业,哈. 步骤1:新建html 建一个Html,主要有三步: 1:引入Aries.Loader.js 2:弄一个tab ...

  7. ExtJS 4.2 业务开发(二)数据展示和查询

    本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...

  8. 深入理解MySql子查询IN的执行和优化

    IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕.例如: SELECT driver_id FROM driver where driver_id in (SELECT dr ...

  9. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

随机推荐

  1. 前端面试 js 你有多了解call,apply,bind?

    函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕不开这些基础 ...

  2. 用python实现九九乘法表输出-两种方法

    2019-08-05 思考过程:九九乘法表需要两层循环,暂且称之为内循环和外循环,因此需要写双层循环来实现. 循环有for和while两种方式. for循环的实现 for i in range(1,1 ...

  3. 第十章 Fisco Bcos 权限控制下的数据上链实操演练

    一.目的 前面已经完成fisco bcos 相关底层搭建.sdk使用.控制台.webase中间件平台等系列实战开发, 本次进行最后一个部分,体系化管理区块链底层,建立有序的底层控管制度,实现权限化管理 ...

  4. The philosophy of ranking

    In the book Decision Quality, one will be trained to have three decision making system; one of them ...

  5. weblogic10.3.6漏洞修改方案

    1.CVE-2018-2628漏洞 CVE-2018-2628漏洞利用的第一步是与weblogic服务器开放在服务端口上的T3服务建立socket连接,可通过控制T3协议的访问来临时阻断攻击行为. W ...

  6. 解决VS2008,重新生成解决方案,很慢

    正所谓:“工欲善其事,必先利其器“.我也算是深受其害了,特把经验分享出来为大伙分忧! 在刚来公司的时候,使用的公司提供的VS2008作为开发工具,有一个非常让人不爽的问题,就是在重新编译代码(重新生成 ...

  7. Go中的反射reflect

    前面我们在学习到struct结构体的时候,因为结构体中的字段首字母大写,而我们想把json文件映射到该结构体上时,需要在在结构体字段后面加上json标签,表明结构体字段和json字段的映射关系.这其中 ...

  8. Linux系统与程序监控工具atop教程

    引言 Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:).但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳 ...

  9. 如何搭建环境---初识mybatis

    一:mybatis概念1:简介       MyBatis本是apache的一个开源项目iBatis,2010年改名为 MyBatis,       MyBatis 是一个基于Java的持久层框架.( ...

  10. 时间格式的字符串在ios中的转换问题

    在移动端使用时间选择器的时候,选择了一个时间转换为时间戳,谷歌浏览器以及安卓手机使用  new Date( 选择的时间 ).getTime()  都能够拿到时间戳, 但是在ios手机上会出现出现NAN ...