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();
        }
  • 相关阅读:
    SpringMVC的自定义校验器
    Spring 国际化 异常:No message found under code 'message' for locale 'zh_CN'.
    《Redis实战》学习实践
    博客系统开发问题
    牛人博客
    Lambda表达式
    红黑树
    配置mysql的主从复制
    mysql 存储过程入门
    一个稍复杂的mysql存储过程
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12371714.html
Copyright © 2011-2022 走看看