jpql语句练习
程序员文章站
2022-05-29 16:42:38
...
多道jpql语句查询练习题
第一个查询所有员工
EntityManager entitManager = JPAUtil.createEntitManager();
//使用JPQL来查绚
String jpql="from Employee";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据查询
List list = query.getResultList();
//数据展示 喇嘛大表达式
list.forEach(e-> System.out.println(e));
entitManager.close();//关闭资源
查询员工名字和所属部门
String jpql="select o.id,o.name,o.department.name from Employee o";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Object[]> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});
查询所有再成都和广州的员工 过滤查询
//使用JPQL来查绚 这个SQ 问好后面的1 2代表的是 相当于名字或者坐标,这样更精确 以后都这样写
String jpql="select o from Employee o where o.department.city = ?1 or o.department.city = ?2";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件
query.setParameter(1,"成都");
query.setParameter(2,"广州");
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
查询所有员工 按月薪排序
String jpql="select o from Employee o order by o.salary desc ";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
查询所有员工 按照部门编号排序
//使用JPQL来查绚 面向对象的思想
String jpql="select o from Employee o order by o.department.sn";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
entitManager.close();//关闭资源
}
查询再恩宁路和八宝街上班的员工信息
String jpql="select o from Employee o where o.department.street = ?1 or o.department.street = ?2";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件
query.setParameter(1,"恩宁路").setParameter(2,"八宝街");
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
查询 5000-6000工资的员工
String jpql="select o from Employee o where o.salary between ?1 and ?2";//可以直接写死这样就不用转换类型
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件 ;输入的类型和表中类型不一样 所以需要设置类型
query.setParameter(1,new BigDecimal(5000)).setParameter(2,new BigDecimal(6000));
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
模糊查询 名字含有en或者 er 的员工
String jpql="select o from Employee o where o.name like ?1 or o.name like ?2";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//填写过滤的条件 模糊查询必须加上百分号%%
query.setParameter(1,"%er%").setParameter(2,"%en%");
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(e+","+e.getDepartment());
});
查询出有员工的部门【distinct】
//使用JPQL来查绚 面向对象的思想 从员工来入手 distinct去重
String jpql="select distinct o.department from Employee o ";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Department> list = query.getResultList();
list.forEach(e-> System.out.println(e));
查询出部门信息,按照部门的员工人数排序【使用函数排序】
//使用JPQL来查绚 这个需要配置一对多 大于0就表示有员工
String jpql="select o from Department o order by o.employees.size desc ";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Department> list = query.getResultList();
list.forEach(e-> System.out.println(e));
查询出没有员工参与的项目【对集合使用size】
//使用JPQL来查绚 这个需要配置一对多 大于0就表示有员工
String jpql="select o from Department o where o.employees.size=0";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Department> list = query.getResultList();
list.forEach(e-> System.out.println(e));
##查询出所有员工及部门名称【JOIN/LEFT JOIN】
*13.查询出所有员工及部门名称【JOIN/LEFT JOIN】
*@throws Exception
* 1.不需要写on(不需要你消除笛卡尔积)
* 2.关连的是前面的对象的别名.属性
* */
String jpql="select o.id,o.name,d.name from Employee o left join o.department d";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Object[]> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});
查询出各个部门员工的平均工资和最高工资【使用聚集函数】
各个部门:group by 平均:avg 最高:max
EntityManager entitManager = JPAUtil.createEntitManager();
//使用JPQL来查绚
String jpql="select o.department.name,avg(o.salary),max (o.salary) from Employee o group by o.department.name";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Object[]> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});
查询出各个项目参与人数报表
String jpql="select o.name,count(e) from Project o left join o.employees e group by o.name";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Object[]> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});
查询项目人数的升级版 这个好简单
String jpql="select o.name,o.employees.size from Project o ";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Object[]> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});
查询出大于平均工资的员工信息
EntityManager entitManager = JPAUtil.createEntitManager();
//使用JPQL来查绚
String jpql="select o from Employee o where o.salary>(select avg(salary) from Employee )";
//获取查询对象
Query query = entitManager.createQuery(jpql);
//数据展示 这个查出来会是数据类型异常所以需要修改
List<Employee> list = query.getResultList();
list.forEach(e-> {
System.out.println(Arrays.asList(e));
});