这里我们做一个案例,一个员工对应一个部门,在员工角度来说是一对一查询,那从部门角度来说,一个部门有多个员工,所以属于一对多查询
修改Dept表,添加员工集合属性
public class Dept {
private int deptno;
private String dname;
private String loc;
//部门表下添加员工集合属性
private List<Emp> emps;
public Dept() {
}
public Dept(int deptno, String dname, String loc, List<Emp> emps) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
this.emps = emps;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
public List<Emp> getEmps() {
return emps;
}
public void setEmps(List<Emp> emps) {
this.emps = emps;
}
}
DeptMapper.java
public interface DeptMapper {
//通过部门编号查询部门
Dept FindDeptByid(int deptno);
}
DeptMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace填写mapper接口的全限定名-->
<mapper namespace="com.msb.mapper.DeptMapper">
<resultMap id="findemp" type="com.msb.pojo.Dept">
<id column="deptno" property="deptno"></id>
<result column="dname" property="dname"></result>
<result column="loc" property="loc"></result>
<!--集合我们这里用Collection标签-->
<collection property="emps" ofType="com.msb.pojo.Emp">
<id column="empno" property="empno"></id>
<result column="ename" property="ename"></result>
<result column="job" property="job"></result>
<result column="deptno" property="deptno"></result>
</collection>
</resultMap>
<select id="FindDeptByid" parameterType="int" resultMap="findemp">
select e.empno,e.ename,e.job,e.deptno,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno where d.deptno = #{deptno}
</select>
</mapper>
测试类
public class MabatisTest {
private SqlSessionFactory factory;
@Before
public void init() throws IOException {
initLogRecord.initLog();
InputStream resource = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(resource);
}
@Test
public void test1() throws Exception {
SqlSession sqlSession = factory.openSession();
//传入参数为想获得接口的实现类
DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
Dept dept = mapper.FindDeptByid(20);
System.out.println(dept.getDeptno()+";"+dept.getDname());
for (Emp emp:
dept.getEmps()) {
System.out.println(emp.getEname()+";"+emp.getJob());
}
sqlSession.close();
}
}
运行结果