部门表是自关联查询,但是进行编辑回显数据时上级部门没有显示,其他信息都在?

//跳转到编辑页面
public void toEdit(HttpServletRequest req, HttpServletResponse resp) {
//获取到list.jsp请求的id
String id = req.getParameter("id");
//调用业务层的selectById方法查询单个对象
Dept dept = deptService.selectById(id);
//查询部门信息
List all = deptService.selectAll();
for (Dept dept1 : all) {
System.out.println(dept1.getDeptName());
}
req.setAttribute("deptList",all);
//设置共享数据,让update.jsp的表单项获取
req.setAttribute("dept",dept);
try {
//转发到编辑页面
req.getRequestDispatcher("/WEB-INF/pages/system/dept/update.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
//编辑
public void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Map<String, String[]> map = req.getParameterMap();
Dept dept = new Dept();
dateConvert();
try {
BeanUtils.populate(dept,map);
} catch (Exception e) {
e.printStackTrace();
}
int result = deptService.update(dept);
System.out.println(result);
this.list(req, resp);
}

jsp代码





部门名称




所属部门


  • <c:forEach items="${deptList}" var="item"> <option ${dept.parent.id == item.id ?'selected':''} value="${item.id}">${item.deptName}

  • 状态














    接口方法
    //查询所有
    @Select("select * from ss_dept")
    @Results({
    @Result(column = "dept_id",property = "id"),
    @Result(column = "dept_name",property = "deptName"),
    @Result(column = "parent_id",property = "parentId"),
    @Result(column = "state",property = "state"),
    @Result(property = "parent",
    javaType = Dept.class,
    column = "parent_id",
    one = @One(select = "com.itheima.mapper.DeptMapper.selectById")

            )
    })
    List<Dept> selectAll();
    
    //根据id查询
    @Select("select * from ss_dept where dept_id=#{id}")
    @Results({
            @Result(column = "dept_id",property = "id"),
            @Result(column = "dept_name",property = "deptName"),
            @Result(column = "parent_id",property = "parentId"),
            @Result(column = "state",property = "state")
    })
    Dept selectById(String id);
    
    
    //添加
    @Insert("insert into ss_dept values (#{id},#{deptName},#{parentId},#{state})")
    int add(Dept dept);
    
    //修改
    @Update("update ss_dept set dept_name=#{deptName},parent_id=#{parentId} where dept_id=#{id}")
    int update(Dept dept);
    
    //删除
    @Delete("delete from ss_dept where dept_id=#{id}")
    int delete(String id);
    

    业务层
    //查询全部
    @Override
    public List selectAll() {
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
    List list = mapper.selectAll();
    return list;
    }

    //分页查询
    @Override
    public Page pageQuery(Integer start, Integer size) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Page page = PageHelper.startPage(start, size);
        mapper.selectAll();
        return page;
    }
    
    //根据id查询
    @Override
    public Dept selectById(String id) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = mapper.selectById(id);
        return dept;
    }
    
    //添加
    @Override
    public int add(Dept dept) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        //id使用UUID的生成策略来获取
        String id = UUID.randomUUID().toString();
        dept.setId(id);
        int result = mapper.add(dept);
        return result;
    }
    
    //修改
    @Override
    public int update(Dept dept) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        int result = mapper.update(dept);
        return result;
    }
    
    //删除
    @Override
    public int delete(String id) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        int result = mapper.delete(id);
        return result;
    }
    

    编辑的时候再发一条根据父级id查部门信息的sql应该就可以了。mybatis默认不做级联,需要自己编码实现。