MyBatis 入门实例 一对一 基于xml配置
两表联合查询
这里我们以员工和部门为例,假设一般员工只能拥有有一个部门
![](https://i-blog.csdnimg.cn/blog_migrate/7c5f63d5cf2e0021ad63aaf771281e83.png)
在Emp实体类中
//一对一关系的定义:把外键的did 定义为相关联的 对象
private Dept dept;
Dept中不变
在DeptDao中写入通过id查询
Dept selectByDid(int did);
<mapper namespace="com.chen.dao.DeptDao">
<select id="selectByDid" parameterType="int" resultType="com.chen.bean.Dept">
select * from dept where did=#{did};
</select>
</mapper>
在EmpDao.xml中定义映射
<mapper namespace="com.chen.dao.EmpDao">
<!--定义手动映射关系:数据库中字段 和 类的属性 的映射-->
<resultMap id="empMap" type="com.chen.bean.Emp">
<id property="eid" column="eid" />
<result property="ename" column="ename" />
<result property="job" column="job" />
<result property="sal" column="sal" />
<result property="phone" column="phone" />
<result property="address" column="address" />
<!--一对一的映射配置association: 自动关联查询:根据外键did执行dept表的关联查询,把查询出来部门信息封装到emp的dept属性-->
<association column="did" select="com.chen.dao.DeptDao.selectByDid" property="dept">
</association>
</resultMap>
<select id="selectAll" resultMap="empMap">
select * from emp
</select>
在测试类中调用
一对多
这里我们依旧以员工和部门为例,假设一般部门有很多员工
依旧是上述配置
在Dept实体类中写入
//一个部门包含多个员工,一对多关系就是定义集合
List<Emp> emps;
EmpDao.xml中写入通过did查询员工信息
<mapper namespace="com.chen.dao.EmpDao">
<select id="selectByDid" parameterType="int" resultType="emp">
select * from emp where did=#{did}
</select>
</mapper>
在Dept中写入映射
<mapper namespace="com.chen.dao.DeptDao">
<resultMap id="deptMap" type="com.chen.bean.Dept">
<id property="did" column="did" />
<result property="dname" column="dname"/>
<result property="dinfo" column="dinfo"/>
<!--配置一对多关系:自动根据did去关联查询emp表中该did的信息-->
<collection column="did" select="com.chen.dao.EmpDao.selectByDid" property="emps">
</collection>
</resultMap>
<select id="selectByDid" parameterType="int" resultMap="deptMap">
select * from dept where did=#{did};
</select>
</mapper>
就能实现一对多的关联查询