zoukankan      html  css  js  c++  java
  • JPA中的复杂查询

    JPQL全称Java Persistence Query Language

    基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起,使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。

    其特征与原生SQL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。

    查询全部:

    /**
         * 查询全部
         */
        @Test
        public void testFindAll() {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction tx = em.getTransaction();
    
            tx.begin();
    
            Query query = em.createQuery("from Customer");
            List list = query.getResultList();
            for (Object o : list) {
                System.out.println(o);
            }
    
            tx.commit();
            em.close();
            factory.close();
        }
    倒序查询客户:
    /**
         * 根据id倒序查询客户
         */
        @Test
        public void testFindAllDesc() {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction tx = em.getTransaction();
    
            tx.begin();
    
            Query query = em.createQuery("from Customer order by custId desc");
            List list = query.getResultList();
            for (Object o : list) {
                System.out.println(o);
            }
    
            tx.commit();
            em.close();
            factory.close();
        }

    统计客户数量:

    /**
         * 统计客户数量
         */
        @Test
        public void testFindCount() {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction tx = em.getTransaction();
    
            tx.begin();
    
            Query query = em.createQuery("select count(custId) from Customer");
            Object o = query.getSingleResult();
            System.out.println(o);
    
            tx.commit();
            em.close();
            factory.close();
        }

    分页查询:

    /**
         * 分页查询
         */
        @Test
        public void testFindPage() {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction tx = em.getTransaction();
    
            tx.begin();
    
            Query query = em.createQuery("from Customer");
            query.setFirstResult(0);
            query.setMaxResults(2);
            List list = query.getResultList();
            for (Object o : list) {
                System.out.println(o);
            }
    
            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();
    
            Query query = em.createQuery("from Customer where custName like ?");
            query.setParameter(1, "%王%");
            List list = query.getResultList();
            for (Object o : list) {
                System.out.println(o);
            }
    
            tx.commit();
            em.close();
            factory.close();
        }
  • 相关阅读:
    AcWing 524. 愤怒的小鸟
    AcWing 算法提高课题解目录
    AcWing 292. 炮兵阵地
    AcWing 798. 差分矩阵
    golang 写数据到excel文件 清明
    使用golang开发mqtt服务压力测试工具 清明
    Linux云服务器安装JDK步骤 清明
    shell monitor memory 清明
    自己实现一个Electron跨进程消息组件(兼新书自荐)
    如何把Electron做成一个Runtime,让多个应用共享同一个Electron
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12371714.html
Copyright © 2011-2022 走看看