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>
页面效果如图
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。