Association元素处理“一对一”类型映射关系,例如,查询有员工所对应的部门,它需要指定column、property、javaType、jdbcType等属性,如下:
<association property="javaben字段" javaType="javabaen所在的类名">
<id column="表字段" property="javabean字段"/>
<result column="表字段" property="javabean字段"/>
</association>
Association元素属性:
1.数据表
t_dept:
t_user:
2.employe.java
package com.casv.model;
public class employee {
private int uid;
private String name;
private String pwd;
private department dept;//部门实体类
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public department getDept() {
return dept;
}
public void setDept(department dept) {
this.dept = dept;
}
}
3.userMapper.java<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- namespace:命名空间,对应dao接口 -->
<mapper namespace="com.casv.dao.userMapper">
<!-- 配置resultMap属性,进行表字段与实体类属性映射 -->
<resultMap id="BaseResultMap" type="emps">
<id column="u_id" property="uid"></id>
<result column="u_name" property="name"></result>
<result column="u_pwd" property="pwd"></result>
<association property="dept" javaType="depts">
<id column="p_id" property="pid"/>
<result column="p_name" property="pname"/>
</association>
</resultMap>
<!-- 多表查询操作 -->
<select id="selectemp" parameterType="int" resultMap="BaseResultMap">
select * from t_user u inner join t_dept d where u.p_id=d.p_id and u.u_id=#{id}
</select>
</mapper>
4.test测试类
public void testdeptbyemp(){
session=MyBatisUtil.getSessionFactory().openSession();
emp=session.selectOne("com.casv.dao.userMapper.selectemp",1);
System.out.println(emp.getUid()+" "+emp.getName()+" "+emp.getPwd()+" "+emp.getDept().getPname());
}
运行结果:1 etccbw 123456 技术部