場(chǎng)景
在實(shí)際的開發(fā)過(guò)程中,往往會(huì)從多個(gè)表里獲取數(shù)據(jù)。此時(shí)需要用到多表操作。如查詢用戶的個(gè)人信息及部門信息。
實(shí)例
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"/>
<!-- 將查詢出來(lái)的User對(duì)象的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執(zhí)行過(guò)程
此時(shí)數(shù)據(jù)的查詢將會(huì)分為兩步,第一步將用戶檢索出來(lái),第二步再根據(jù)每個(gè)用戶的deptid查詢到部門信息。