步骤1:在com.bstek.dorado.sample.standardlesson.service.DeptService类中增加根据部门Id查询部门下所有员工的方法getEmployeeByDeptId,最终代码如下:
package com.bstek.dorado.sample.standardlesson.service; import java.util.Collection; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.annotation.DataResolver; import com.bstek.dorado.data.provider.Page; import com.bstek.dorado.sample.standardlesson.dao.SlDeptDao; import com.bstek.dorado.sample.standardlesson.dao.SlEmployeeDao; import com.bstek.dorado.sample.standardlesson.entity.SlDept; import com.bstek.dorado.sample.standardlesson.entity.SlEmployee; @Component public class DeptService { @Resource private SlDeptDao slDeptDao; @Resource private SlEmployeeDao slEmployeeDao; @DataProvider public Collection<SlDept> getTopDept(){ return slDeptDao.find("from SlDept where slDept.deptId is null"); } @DataProvider public Collection<SlDept> getDeptByParentId(Integer parentId){ if(null != parentId){ String hql = "from SlDept where slDept.deptId = :deptId"; Map param = new HashMap(); param.put("deptId", parentId); return slDeptDao.find(hql, param); }else{ return null; } } @DataResolver @Transactional public void saveAll(Collection<SlDept> depts){ for(SlDept dept:depts){ slDeptDao.persistEntity(dept); Collection<SlDept> childs = dept.getSlDeptSet(); if(!(childs == null)){ for(SlDept child:childs){ //维护关联关系 child.setSlDept(dept); } slDeptDao.persistEntities(childs); saveAll(childs); } } } @DataProvider public void getEmployeeByDeptId(Page<SlEmployee> page, Integer deptId){ if(null != deptId){ String hql = "from SlEmployee where slDept.deptId = :deptId"; Map param = new HashMap(); param.put("deptId", deptId); slEmployeeDao.find(page, hql, param); } } }
可以看到getEmployeeByDeptId方法比较简单,由于SlDept下的slEmployeeSet这个Reference设置了pageSize和parameter这2个属性,因此在后台需要接受2个参数,一个是page参数,另一个是deptId部门编号参数,然后根据传入的部门编号进行查询。