一、实体类(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