当前位置:   article > 正文

Spring data jpa总结(二)_springdatajpa @query select 字段中使用占位符

springdatajpa @query select 字段中使用占位符

jpql介绍。JPQL全称Java Persistence Query Language。
查询步骤:

  1. 创建query查询对象
  2. 对参数进行赋值
  3. 查询,并得到返回结果

jpql查询与SQL查询的语法区别:
查询全部客户数据

  • jqpl: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、查询全部
        //from cn.itcast.domain.Customer  或者from  Customer都可以
        String jpql = "from cn.itcast.domain.Customer";
        Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
        //发送查询,并封装结果集
        List list = query.getResultList();
        for (Object obj:list) {
            System.out.println(obj);
        }
        //4、提交事务
        tx.commit();
        //5、释放资源
        em.close();
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

排序查询倒叙查询全部客户(根据ID倒叙)

  • jqpl:from Customer order by custId desc
  • sql:SELECT * FROM cst_customer ORDER BY cust_id DESC
public void testOrders(){
        //1、获取entityManager对象
        EntityManager em = JpaUtils.getEntityManager();
        //2、开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        //3、查询全部
        //from cn.itcast.domain.Customer  或者from  Customer都可以
        String jpql = "from Customer order by custId desc";
        Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
        //发送查询,并封装结果集
        List list = query.getResultList();
        for (Object obj:list) {
            System.out.println(obj);
        }
        //4、提交事务
        tx.commit();
        //5、释放资源
        em.close();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

统计客户的总数

  • jqpl:select count(custId) from Customer
  • sql:SELECT COUNT(cust_id) FROM cst_customer
public void testCount(){
        //1、获取entityManager对象
        EntityManager em = JpaUtils.getEntityManager();
        //2、开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        //3、查询全部
        //a、使用jpql语句创建query查询对象
        String jpql = "select count(custId) from Customer";
        Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
        //b、对参数赋值
        //c、发送查询,并封装结果集
        /**
         * getResultList : 直接将查询结果封装为list集合
         * getSingleResult : 得到唯一的结果集
         */
        Object result = query.getSingleResult();
        System.out.println(result);
        //4、提交事务
        tx.commit();
        //5、释放资源
        em.close();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

分页查询

  • jqpl:from Customer
  • sql:select * from cst_customer limit 0,2
public void testPaged(){
        //1、获取entityManager对象
        EntityManager em = JpaUtils.getEntityManager();
        //2、开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        //3、查询全部
        //a、使用jpql语句创建query查询对象
        String jpql = "from Customer";
        Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
        //b、对参数赋值---分页参数
        //起始索引
        query.setFirstResult(0);
        //每页查询的条数
        query.setMaxResults(2);
        //c、发送查询,并封装结果集
        /**
         * getResultList : 直接将查询结果封装为list集合
         * getSingleResult : 得到唯一的结果集
         */
        List list = query.getResultList();
        for (Object obj :
                list) {
            System.out.println(obj);
        }
        //4、提交事务
        tx.commit();
        //5、释放资源
        em.close();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

条件查询
案例:查询客户名称以‘谷歌’开头的客户

  • jqpl:from Customer where custName like ?
  • sql:SELECT * FROM cst_customer WHERE cust_name LIKE ?
public void testCondition(){
        //1、获取entityManager对象
        EntityManager em = JpaUtils.getEntityManager();
        //2、开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();
        //3、查询全部
        //a、使用jpql语句创建query查询对象
        String jpql = "from Customer where custName like ?";
        Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
        //b、对参数赋值---占位符参数
        //第一个参数:占位符的索引位置(从1开始),第二个参数:取值
        query.setParameter(1,"谷歌");
        //c、发送查询,并封装结果集
        /**
         * getResultList : 直接将查询结果封装为list集合
         * getSingleResult : 得到唯一的结果集
         */
        List list = query.getResultList();
        for (Object obj :
                list) {
            System.out.println(obj);
        }
        //4、提交事务
        tx.commit();
        //5、释放资源
        em.close();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/114918
推荐阅读