Spring data jpa总结

Posted hequnwang10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring data jpa总结相关的知识,希望对你有一定的参考价值。

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();
    }

排序查询倒叙查询全部客户(根据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();
    }

统计客户的总数

  • 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();
    }

分页查询

  • 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();
    }

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

  • 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();
    }

以上是关于Spring data jpa总结的主要内容,如果未能解决你的问题,请参考以下文章

spring data jpa总结

spring data jpa总结

Spring Data JPA 和MyBatis比较

Spring Data Jpa 复杂查询总结 (多表关联 以及 自定义分页 )

spring data jpa 的使用

spring data jpa的使用