欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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));
});
相关标签: 数据库相关