0th

接简洁版SSM08,这个案例没有处理多对一的关联查询

1th 第一种方式

拼sql,修改原来的sql

原sql

    <!-- sql 要注意测试 -->
    <select id="selectEmp" resultType="Emp">
        select e.*, d.departname departname2 from emp e 
        where 1=1
        <if test="empname!=null and empname!='' ">
            and e.empname like '%${empname}%'
        </if>
        
         order by empid desc
    </select>

为关联查询修改后sql

    <!-- sql 要注意测试 -->
    <select id="selectEmp" resultType="Emp">
        select e.*, d.departname departname2 from emp e 
        left outer join depart d on e.departid=d.departid
        where 1=1
        <if test="empname!=null and empname!='' ">
            and e.empname like '%${empname}%'
        </if>
        
         order by empid desc
    </select>

Emp bean里增加departname2字段和setter,getter方法

private String departname2;
    
    

    public String getDepartname2() {
        return departname2;
    }

    public void setDepartname2(String departname2) {
        this.departname2 = departname2;
    }

2th for循环根据外键关联查询

mapper.java里增加

    //*************************关联查询常用的一种方式
    
    public Depart selectDepartById(Integer departid);

mapper.xml里增加

    <select id="selectDepartById" resultType="Depart">
        select * from depart d where departid=${value}
    </select>

emp bean里增加department字段和setter,getter方法

private String departname;

setter和getter方法的代码,略.

controller层代码如下

    List<Emp> empList = empMapper.selectEmp(empname);
    System.out.println(empList.size()+"-----------------------------------");
    for (Emp emp : empList) {
        //departid在emp表里,多对一,外键在多的表中
        //根据departid--查询departname
        Depart depart = empMapper.selectDepartById(emp.getDepartid());
        emp.setDepartname(depart.getDepartname());
    }

jsp代码增加部分

<c:forEach items="${empList }" var="m">
<tr>
    <td>
        <input type="checkbox" name="ck" value="${m.empid }" />
    </td>
    <td>${m.empid }</td>
    <td>${m.empname }</td>
    <td>${m.empdesc }</td>
    <td>${m.departid }</td>
    <td>${m.departname }</td>
    <td>${m.departname2 }</td>
    <td>${m.jobid }</td>
    <td>${m.age }</td>
    <td>${m.sex }</td>
    <td>${m.birth }</td>
    <td><input type="button" value="del"  onclick="del(${m.empid})" /> </td>
    <td><input type="button" value="update"  onclick="update(${m.empid})" /> </td>
</tr>
</c:forEach>

以下两行是增加部分

    <td>${m.departname }</td>
    <td>${m.departname2 }</td>

页面效果如图
image.png


张泽
5 声望1 粉丝