JPA中的复杂查询
JPQL 全称 Java Persistence Query Language
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。
其特征与原生的sql语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。
sql:查询的是表和表中的字段。
jpal:查询的是实体类和类中的属性。
1、查询全部
package cn.ysk.test;
import cn.ysk.utils.JpaUtils;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import java.util.List;
/**
* 测试jpql查询
* @Author ysk
* @Date 2020/3/6 14:56
* @Version 1.0
*/
public class JpqlTest {
/**
* 查询全部
* jpql: from cn.ysk.domain.Customer
* sql: select * from cst_customer
*/
@Test
public void testFindAll(){
//1.获取EntityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2.开启事务
EntityTransaction tx = em.getTransaction();
//3.完成增删改查操作
// String jqpl = "from cn.ysk.domain.Customer";
String jqpl = "from Customer"; //可省略
Query query = em.createQuery(jqpl); //创建Query查询对象,query对象才是执行jpql的对象