美文网首页
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