关于spring:SSM关联查询常用的两种方式

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>

页面成果如图

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理