mybatis自关联多对一查询

自关联多对一查询

多对一查询指的是多方可以看到一方,即给出一个员工编号,查看一下他的所有上级领导是谁。

修改Employee
在之前的Employee类中添加下面属性,该属性表示当前员工的上级领导对象:

private Employee leader;

//省略getter,setter和toString

修改mapper
在EmployeeMapper.xml文件中添加下面内容:

<resultMap id="leaderMap" type="Employee">
    <id column="id" property="id"/>
    <result column="name" property="name"/>
    <association property="leader" javaType="Employee" select="selectLeaderByPid" column="mgr"/>
</resultMap>

<select id="selectLeaderByPid" resultMap="leaderMap">
    SELECT id,name,job,mgr
    FROM t_employee
    WHERE id=#{id}
</select>

association中的select表示要执行的sql语句,column表示将之前的sql语句中查询出的mgr作为条件id再次执行sql语句。

修改dao

添加下面方法:

Employee selectLeaderByPid(int mgr);

添加测试方法

@Test
public void selectLeaderByPid(){
    Employee employee = employeeDao.selectLeaderByPid(1005);

    System.out.println(employee);
}

这样子就可以将当前员工的所有领导全部查询出来。