一对一关联查询搞了好久终于搞懂了,写篇博客纪念一下
这篇博客的配置以及实体类映射文件与我的第一篇博客完全相同,你可以参考
解决mybatis一对多查询问题时的只显示一条数据的问题(查询部门的同时把所属部门的员工信息查出来)关联查询
业务要求:是要查出用户的同时也要把用户的所属部门查出来,也存在没有部门的用户,比如管理员,比如老板所以查询的时候要用左外连接查询
附上两张表的图:
查询sql:
该sql放到数据库可以查出来
SELECT u.*,
d.id did,
d.name,
d.parentId,
d.sort,
d.note,
d.createdTime,
d.modifiedTime,
d.createdUser,
d.modifiedUser
FROM sys_users u
LEFT JOIN sys_depts d
ON u.deptId=d.id
UserDao接口:
public interface UserDao{
List<User> selectUsersDept();
}
UserMapepr.xml文件:
<mapper namespace="com.cn.dao.UserDao">
<select id="selectUsersDept" resultMap="ResultUsersDept">
<!-- 这里要把没有部门的员工也查出来所以要用左外连接查询 -->
SELECT u.*,
d.id did,
//这里注意在你两张表的主键都一样的情况下要给其中一张表起别名,
不然容易部门id和用户的id一模一样,重点注意
d.name,
d.parentId,
d.sort,
d.note,
d.createdTime,
d.modifiedTime,
d.createdUser,
d.modifiedUser
FROM sys_users u
LEFT JOIN sys_depts d
ON u.deptId=d.id
</select>
<resultMap type="com.cn.entity.User" id="ResultUsersDept">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="salt" column="salt"/>
<result property="deptId" column="dept_id"/>
<result property="email" column="email"/>
<result property="mobile" column="mobile"/>
<result property="valid" column="valid"/