mybatis一对一关联查询(查询用户的同时也把用户所属的部门查出来,用assocation)

本文详细介绍了如何使用MyBatis进行一对一关联查询,以解决查询用户时同时获取其所属部门的问题。通过左外连接确保包含没有部门的用户,如管理员。内容包括SQL查询、UserDao接口、Mapper映射文件及测试步骤,总结了一对一查询中assocation的使用技巧和注意事项。
摘要由CSDN通过智能技术生成

一对一关联查询搞了好久终于搞懂了,写篇博客纪念一下

这篇博客的配置以及实体类映射文件与我的第一篇博客完全相同,你可以参考
解决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"/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值