• JSQL查询


    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,"黑马%");    
  • 相关阅读:
    CentOs7-替换下载源
    CentOs7-常用命令
    Django Nginx+uwsgi 安装配置
    Linux操作系统下文件作用
    U盘创建macOS安装盘
    国内开源镜像站点汇总
    gcd常见用法
    mac rvm 升级 ruby 安装cocoapod 指定版本
    confluence 搭建 wiki 并破解
    homebrew 安装 java 指定版本
  • 原文地址:https://www.cnblogs.com/xiaozhongfeixiang/p/11459276.html
Copyright © 2020-2023  润新知