最基本的JPQL的格式
只能写java的类名和属性名
SELECT o[o.property,o.property*] FROM Entity o
[WHERE conditions]
[GROUP BY conditions]
[HAVING conditions]
[ORDER BY o.property[ASC|DESC]]
@TestpublicvoidTest3(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o where o.department.city =? or o.department.city = ?";
Query query = entityManager.createQuery(jpql);
query.setParameter(1,"成都").setParameter(2,"广州");
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
查询排序
@TestpublicvoidTest4(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o order by o.salary desc ";
Query query = entityManager.createQuery(jpql);
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
使用关联对象属性排序
@TestpublicvoidTest5(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o order by o.department.id desc ";
Query query = entityManager.createQuery(jpql);
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
使用IN
@TestpublicvoidTest6(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o where o.department.street in (?0,?1)";
Query query = entityManager.createQuery(jpql);
query.setParameter(0,"恩宁路").setParameter(1,"八宝街");
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
使用BETWEEN…AND…
@TestpublicvoidTest7(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o where o.salary BETWEEN :min AND:max ";
Query query = entityManager.createQuery(jpql);
query.setParameter("min",newBigDecimal(5000)).setParameter("max",newBigDecimal(6000));
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}
使用LIKE
@TestpublicvoidTest8(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o where o.name like ?0 or o.name like ?1";
Query query = entityManager.createQuery(jpql);
query.setParameter(0,"%er%").setParameter(1,"%en%");
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
distinct 去重
@TestpublicvoidTest9(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select distinct o.department from Employee o ";
Query query = entityManager.createQuery(jpql);
List<Department> resultList = query.getResultList();for(Department department : resultList){
System.out.println(department);}}
size
@TestpublicvoidTest10(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Department o where o.employees.size> 0 ";
Query query = entityManager.createQuery(jpql);
List<Department> resultList = query.getResultList();for(Department department : resultList){
System.out.println(department);}}
对集合使用size
@TestpublicvoidTest12(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Project o where o.employees.size= 0 ";
Query query = entityManager.createQuery(jpql);
List<Project> resultList = query.getResultList();for(Project project : resultList){
System.out.println(project);}}
JOIN/LEFT JOIN 连接
@TestpublicvoidTest13(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o,e.name from Employee o join o.department e ";
Query query = entityManager.createQuery(jpql);
List<Object[]> resultList = query.getResultList();for(Object[] objects : resultList){
System.out.println(Arrays.toString(objects));}}
使用聚集函数
@TestpublicvoidTest15(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select max(o.salary),avg(o.salary),o.department.name "+"from Employee o group by o.department.name";
Query query = entityManager.createQuery(jpql);
List<Object[]> resultList = query.getResultList();for(Object[] objects : resultList){
System.out.println(Arrays.toString(objects));}}
子查询
@TestpublicvoidTest17(){
EntityManager entityManager = JpaUtil.getEntityManager();
String jpql ="select o from Employee o where salary>(select avg(salary) from Employee)";
Query query = entityManager.createQuery(jpql);
List<Employee> resultList = query.getResultList();for(Employee employee : resultList){
System.out.println(employee);}}
基础的jpql语句最基本的JPQL的格式只能写java的类名和属性名SELECT o[o.property,o.property*] FROM Entity o[WHERE conditions] [GROUP BY conditions][HAVING conditions][ORDER BY o.property[ASC|DESC]]JPQL书写规则JPA的查询语言,类似于...