SpringDataJpa---jpql初步使用

本文介绍了SpringDataJpa中JPQL的初步使用,包括为何使用JPQL以解决复杂SQL编写难题,以及JPQL的基础操作,如查询、倒序查询、统计总数和分页、条件查询等。
摘要由CSDN通过智能技术生成

SpringDataJpa—jpql初步使用

1、为什么要使用jpql?

平常我们在使用HIbernate等框架时对一些复杂的sql语句编写十分的不方便,于是便出现了jpql,它是一款面向对象编写sql的框架,正因为它简单、强大并且适用于任何类型的数据库,所以现在十分流行

2、具体用法

查询语句:

/**
     * 查询全部
     */
    @Test
    public void testFindAll(){
        //加载配置文件创建工厂(实体管理工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");

        //通过实体管理工厂获取实体管理器
        EntityManager em = factory.createEntityManager();

        //获取事务对象,开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        //完成增删改查操作
        /**
         * 查询全部
         */
        String jpq1 = "from domain.Customer";

        //创建Query对象,Query对象才是执行jpql的对象
        Query query = em.createQuery(jpq1);

        //发送查询,并封装结果集
        List list = query.getResultList();

        for (Object obj : list) {
            System.out.println(obj);
        }

        //提交事务
        tx.commit();

        //释放资源
        em.close();
        factory.close();
    }

倒序查询语句:

/**
     * 倒序查询全部
     */
    @Test
    public void testReverseOrderFindAll(){
        //加载配置文件创建工厂(实体管理工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");

        //通过实体管理工厂获取实体管理器
        EntityManager em = factory.createEntityManager();

        //获取事务对象,开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        //完成增删改查操作
        /**
         * 查询倒序全部
         */
        String jpq1 = "from Customer order by custId desc";

        //创建Query对象,Query对象才是执行jpql的对象
        Query query = em.createQuery(jpq1);

        //发送查询,并封装结果集
        List list = query.getResultList();

        for (Object obj : list) {
            System.out.println(obj);
        }

        //提交事务
        tx.commit();

        //释放资源
        em.close();
        factory.close();
    }

统计总数:

/**
     * 统计客户总数
     */
    @Test
    public void tesCount(){
        //加载配置文件创建工厂(实体管理工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");

        //通过实体管理工厂获取实体管理器
        EntityManager em = factory.createEntityManager();

        //获取事务对象,开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        //完成增删改查操作
        /**
         * 统计客户总数
         */
        String jpq1 = "select count(custId) from Customer ";

        //创建Query对象,Query对象才是执行jpql的对象
        Query query = em.createQuery(jpq1);

        //发送查询,并封装结果集
        Object result = query.getSingleResult();

        System.out.println(result);

        //提交事务
        tx.commit();

        //释放资源
        em.close();
        factory.close();
    }

分页查询:

/**
     * 分页查询
     */
    @Test
    public void testPaged(){
        //加载配置文件创建工厂(实体管理工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");

        //通过实体管理工厂获取实体管理器
        EntityManager em = factory.createEntityManager();

        //获取事务对象,开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        //完成增删改查操作
        /**
         * 分页查询
         */
        String jpq1 = "from Customer";

        //创建Query对象,Query对象才是执行jpql的对象
        Query query = em.createQuery(jpq1);

        //对参数进行赋值、
        //起始索引
        query.setFirstResult(1);
        //每页查询条数
        query.setMaxResults(1);

        //发送查询,并封装结果集
        List list = query.getResultList();

        for (Object obj : list) {
            System.out.println(obj);
        }

        //提交事务
        tx.commit();

        //释放资源
        em.close();
        factory.close();
    }

条件查询:

/**
     * 条件查询
     */
    @Test
    public void testCondition(){
        //加载配置文件创建工厂(实体管理工厂)对象
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("myjpa");

        //通过实体管理工厂获取实体管理器
        EntityManager em = factory.createEntityManager();

        //获取事务对象,开启事务
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        //完成增删改查操作
        /**
         * 条件查询
         */
        String jpq1 = "from Customer where custName like ?";

        //创建Query对象,Query对象才是执行jpql的对象
        Query query = em.createQuery(jpq1);

        //对参数进行赋值、
        //第一个参数:占位符的索引位置(从1开始),第二个参数:取值
        query.setParameter(1,"张三");

        //发送查询,并封装结果集
        List list = query.getResultList();

        for (Object obj : list) {
            System.out.println(obj);
        }

        //提交事务
        tx.commit();

        //释放资源
        em.close();
        factory.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值