Mybatis - association 分步查询

2020-08-26  本文已影响0人  极课编程

场景
在实际的开发过程中,往往会从多个表里获取数据。此时需要用到多表操作。如查询用户的个人信息及部门信息。

实例
UserMapper.java

public interface UserMapper {
  UserInfo getUserInfoById (Integer id);
}

DepartmentMapper.java

public interface DepartmentMapper {
  Department getDepartmentByUserId (Integer uid);
}

UserMapper.xml

<select id="getUserInfo" resultMap="userInfoMap">
  SELECT username, age, workno, deptid
  FROM user WHERE uid = #{id}
</select>

<resultMap id="userInfoMap" type="com.cat.pojo.UserInfo">
  <result column="username" property="uname"/>
  <result column="age" property="age"/>
  <result column="workno" property="workNo"/>

  <!-- 将查询出来的User对象的deptid传入,封装成具体的Department信息,得到用户的信息及Department信息 -->
  <association property="dept" column="deptid" select="com.cat.mapper.DepartmentMapper.getDepartmentByUserId" />
</resultMap>

DepartmentMapper.xml

<select id="getDepartmentByUserId" parameterType="string" resultType="com.cat.pojo.Department">
  SELECT department_name, leader FROM department WHERE id = #{deptId}
</select>

SQL执行过程
此时数据的查询将会分为两步,第一步将用户检索出来,第二步再根据每个用户的deptid查询到部门信息。

上一篇下一篇

猜你喜欢

热点阅读