美文网首页
2019-10-16Jpql的使用方法

2019-10-16Jpql的使用方法

作者: 卡布奇诺_7828 | 来源:发表于2019-10-16 13:48 被阅读0次
package com.shenyue.controller;

import com.shenyue.bean.Customer;
import com.shenyue.utils.JpaUtils;
import org.junit.jupiter.api.Test;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import java.util.List;

/*
 *       测试jpql查询
 *
 * */
public class JpqlTest {
    /*
     * 查询全部
     *       jpql:from Customer
     *       sql, 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 com.shenyue.bean.Customer";
        Query query = em.createQuery(jpql);//创建Query查询对象,query对象才是执行jpql的对象
//    发送查询并封装结果集
        List resultList = query.getResultList();
        for (Object obj: resultList){
            System.out.println(obj);
        }
//    4.提交事务
        tx.commit();
//    5.释放资源
        em.close();
    }
    /*
    * 排序查询: 倒序查询全部客户(根据id倒叙)
    *       sql: select* from ces_customer order by id desc
    *       jpql:from Customer order by custId desc
    *
    * 进行jpql查询
    *       1.创建query查询对象
    *       2.对参数进行赋值
    *       3.查询,并得到返回结果
    *
    * */

    @Test
    public void testOrders() {
//    1.获取EntityManager对象
        EntityManager em = JpaUtils.getEntityManager();
//    2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//    3.查询全部
        String jpql ="from com.shenyue.bean.Customer order by custId desc";
        Query query = em.createQuery(jpql);//创建Query查询对象,query对象才是执行jpql的对象
//    发送查询并封装结果集
        List resultList = query.getResultList();
        for (Object obj: resultList){
            System.out.println(obj);
        }
//    4.提交事务
        tx.commit();
//    5.释放资源
        em.close();
    }
    /*
    * 使用jpql查询,统计客户的总数
    *   sql:select count(cust_id) from cst_customer
    *   jpql:select count(custId) from Customer
    * */
    @Test
    public void testCount() {
//    1.获取EntityManager对象
        EntityManager em = JpaUtils.getEntityManager();
//    2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//    3.查询全部
//        i.根据jpql语句创建Query查询对象
        String jpql ="select count(custId) from Customer";
        Query query = em.createQuery(jpql);//创建Query查询对象,query对象才是执行jpql的对象
//        ii。对参数赋值
//        iii.发送查询,并封装结果
        /*
        *  getResultList:直接将查询结果封装为list集合
        *  getSingleResult:得到唯一的结果集
        * */
        Object result = query.getSingleResult();
        System.out.println(result);
//    4.提交事务
        tx.commit();
//    5.释放资源
        em.close();
    }
/*
* 分页查询
*       sql:select * from cst_customer limit ?,?
*       jpql: from Customer
* */
    @Test
    public void testPaged() {
//    1.获取EntityManager对象
        EntityManager em = JpaUtils.getEntityManager();
//    2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//    3.查询全部
//        i.根据jpql语句创建Query查询对象
        String jpql ="from Customer";
        Query query = em.createQuery(jpql);//创建Query查询对象,query对象才是执行jpql的对象
//        ii。对参数赋值
//        起始索引
        query.setFirstResult(0);
//        每页查询的条数
        query.setMaxResults(2);
//        iii.发送查询,并封装结果
        /*
         *  getResultList:直接将查询结果封装为list集合
         *  getSingleResult:得到唯一的结果集
         * */
        List list = query.getResultList();
        for (Object obj:list){
            System.out.println(obj);
        }
//    4.提交事务
        tx.commit();
//    5.释放资源
        em.close();
    }
/*
* 条件查询
* */
    @Test
    public void testCondition() {
//    1.获取EntityManager对象
        EntityManager em = JpaUtils.getEntityManager();
//    2.开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
//    3.查询全部
//        i.根据jpql语句创建Query查询对象
        String jpql ="from Customer where custName like ?";
        Query query = em.createQuery(jpql);//创建Query查询对象,query对象才是执行jpql的对象
//        ii。对参数赋值--占位符
//        第一个参数,占位符的索引位置(从1开始),第二个取值
        query.setParameter(1,"银%");
//        iii.发送查询,并封装结果
        /*
         *  getResultList:直接将查询结果封装为list集合
         *  getSingleResult:得到唯一的结果集
         * */
        List list = query.getResultList();
        for (Object obj:list){
            System.out.println(obj+"0000000");
        }
//    4.提交事务
        tx.commit();
//    5.释放资源
        em.close();
    }
}

相关文章

网友评论

      本文标题:2019-10-16Jpql的使用方法

      本文链接:https://www.haomeiwen.com/subject/xkzymctx.html