• 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();
        }
  • 相关阅读:
    ThinkPhp6.x+AntDesign+Vue前后端分离快速开发平台
    Laravel8.x+AntDesign+Vue前后端分离快速开发平台
    JavaWeb v1.0.0后台开发框架,专业版发布——细节完善,体验优化
    高并发情况下的DB重复插入解决方案随笔
    jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO
    新能源车牌的问题
    OCR识别移动端的实现与应用
    在拥有vin码识别的时代,您还在傻乎乎手工录入吗?
    国内的车牌识别算法怎样选择
    一码在手运车无忧
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12371714.html
Copyright © 2020-2023  润新知