Qpql书写规则
(1)在jpql里面不能刚出现*和表名 只能出现对象别名或者 类名 关键字和sql里面一样
(2).类名和属性名要区分大小写
(3)简单的jpql语句 String jpql = "select o from 类名 o";
一些简单的数据查询
定义实体类
建立关联
测试代码
//2.2.1.查询所有员工【查询实体类型】
@Test
public void testQuery1()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o";
Query query = entityManager.createQuery(spql);
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.2.查询所有员工的姓名和所属部门名称【查询特定属性】
@Test
public void testQuery2()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o.name,o.department.name from Employee o";
Query query = entityManager.createQuery(spql);
List<Object[]> resultList = query.getResultList();
for (Object[] o : resultList) {
System.out.println(Arrays.toString(o));
}
}
//2.2.3.查询出所有在成都和广州工作的员工【查询结果过滤】
@Test
public void testQuery3()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o where o.department.city=? or o.department.city=?";
Query query = entityManager.createQuery(spql);
query.setParameter(1, "成都");
query.setParameter(2,"广州" );
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.4.查询出所有员工信息,按照月薪排序【查询排序】
//oder by 需要排序的内容 排序的方式DESC asc
@Test
public void testQuery4()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o order by o.salary DESC ";
Query query = entityManager.createQuery(spql);
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.5.查询出所有员工信息,按照部门编号排序【使用关联对象属性排序】
@Test
public void testQuery5()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o order by o.department.sn asc ";
Query query = entityManager.createQuery(spql);
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.6.查询出在恩宁路和八宝街上班的员工信息【使用IN】
@Test
public void testQuery6 ()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o where o.department.street in(?,?)";
Query query = entityManager.createQuery(spql);
query.setParameter(1, "恩宁路" ).setParameter(2, "八宝街" );
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.7.查询出工资在5000-6000的员工【使用BETWEEN..AND..】
@Test
public void testQuery7()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o where o.salary between 5000 and 6000";
Query query = entityManager.createQuery(spql);
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
//2.2.8.查询出姓名包含er或者en的员工【使用LIKE】
@Test
public void testQuery8()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Employee o where o.name like ? or o.name like ?";
Query query = entityManager.createQuery(spql);
query.setParameter(1, "%er%" ).setParameter(2, "%en%" );
List<Employee> resultList = query.getResultList();
for (Employee o : resultList) {
System.out.println(o);
}
}
// 查询出有员工的部门【size】
@Test
public void testQuery9()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select o.name from Department o where o.employees.size>0";
Query query = entityManager.createQuery(spql);
List<String> resultList = query.getResultList();
for (String o : resultList) {
System.out.println(o);
}
}
//2.3.1.查询出有员工的部门【distinct】
@Test
public void testQuery10()throws Exception {
EntityManager entityManager = Util.getentityManager();
String spql = "select distinct o.department.name from Employee o";
Query query = entityManager.createQuery(spql);
List<String> resultList = query.getResultList();
for (String o : resultList) {
System.out.println(o);
}
}
//2.4.2.查询出部门信息,按照部门的员工人数排序
@Test
public void testQuery11()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o from Department o order by o.employees.size asc ";
Query query = entityManager.createQuery(spql);
List<Department> resultList = query.getResultList();
for (Department o : resultList) {
System.out.println(o);
}
}
//2.4.3.查询出没有员工参与的项目【对集合使用size】
@Test
public void testQuery12()throws Exception{
EntityManager entityManager = Util.getentityManager();
String spql = "select o.name from Project o where o.employees.size=0";
Query query = entityManager.createQuery(spql);
List<String> resultList = query.getResultList();
for (String o : resultList) {
System.out.println(o);
}
}
//2.5.1.查询出所有员工及部门名称【JOIN/LEFT JOIN】
@Test