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>

页面成果如图