一、实体类(getset方法,toString,构造方法忽略)
public class Dept {
private Integer deptid;
private String dname;
private String dloc;
}
public class Emp {
private Integer empid;
private String ename;
private String esex;
private Date ehiredate;
private Double esal;
private Dept dept;
}
二、接口方法,以下用了两种方法(推荐第一种)
public interface EmpMapper {
public List<Emp> selectAllEmp();
public List<Emp> selectAllEmp2();
}
三、xml文件
EmpMapper.xml
<mapper namespace="com.gx.mapper.EmpMapper"> <resultMap type="Emp" id="BaseEmp"> <id property="empid" column="empid" /> <result property="ename" column="ename"/> <result property="esex" column="esex"/> <result property="ehiredate" column="ehiredate"/> <result property="esal" column="esal"/> </resultMap> <resultMap type="Emp" id="myEmp" extends="BaseEmp"> <!-- 建立关系 property="dept" 指emp里面的dept属性 javaType 指emp属性的类型 --> <association property="dept" javaType="com.gx.domain.Dept" > <id property="deptid" column="deptid"/> <result property="dname" column="dname"/> <result property="dloc" column="dloc"/> </association> </resultMap> <select id="selectAllEmp" resultMap="myEmp"> select * from emp inner join dept using(deptid) </select> <resultMap type="Emp" id="myEmp2" extends="BaseEmp"> <!-- 建立关系 property="dept" 指emp里面的dept属性 javaType 指emp属性的类型 column="deptid" 从当前的结果集里面取出deptid,传给com.gx.mapper.DeptMapper.selectDeptById --> <association property="dept" column="deptid" select="com.gx.mapper.DeptMapper.selectDeptById"> </association> </resultMap> <select id="selectAllEmp2" resultMap="myEmp2"> select * from emp inner join dept using(deptid) </select> </mapper>
DeptMapper.xml
<mapper namespace="com.gx.mapper.DeptMapper">
<!-- 根据部门编号查询部门信息-->
<select id="selectDeptById" resultType="Dept">
select * from dept where deptid=#{deptid}
</select>
</mapper>
四、测试
public class myTest {
SqlSession session = MyBatisUtils.openSession();
EmpMapper empMapper = session.getMapper(EmpMapper.class);
@Test
public void selectAllEmp() {
List<Emp> list = empMapper.selectAllEmp();
for (Emp emp : list) {
System.out.println(emp);
}
MyBatisUtils.closeSession(session);
}
@Test
public void selectAllEmp2() {
List<Emp> list = empMapper.selectAllEmp2();
for (Emp emp : list) {
System.out.println(emp);
}
MyBatisUtils.closeSession(session);
}
}
其他方法:可以在Emp实体类中添加dname,dloc,
select * from emp inner join dept using(deptid)
用直接查询出来
原文:https://www.cnblogs.com/97guoxiang/p/12774881.html