配置别名
<!-- 配置别名-->
<typeAliases>
<package name="com.sky.pojo"/>
</typeAliases>
mybatis一对一高级映射和一对多高级映射
<!-- 一条数据-->
<resultMap id="map" type="Emp" autoMapping="true">
<!-- id:主键映射,column:列名;property:属性名-->
<id column="empno" property="empno"></id>
<!-- result:一般映射-->
<result property="ename" column="ename"></result>
<!-- association-->
<association property="dept" javaType="Dept" autoMapping="true">
<id column="deptno" property="deptno"></id>
<result column="dname" property="dname"></result>
</association>
</resultMap>
<select id="test8" resultMap="map">
SELECT * FROM emp LEFT JOIN dept ON emp.deptno = dept.deptno WHERE empno = #{empno}
</select>
<!-- 多条数据-->
<resultMap id="abab" type="Dept" autoMapping="true">
<!-- id:主键映射,column:列名;property:属性名-->
<id column="deptno" property="deptno"></id>
<!-- result:一般映射-->
<result column="dname" property="dname"></result>
<!-- property:即将要封装的属性名,集合的属性名
javaType:这个属性的数据类型
ofType:泛型的类型
-->
<collection property="emps" ofType="Emp" javaType="List" autoMapping="true">
<id column="empno" property="empno"></id>
<result property="ename" column="ename"></result>
</collection>
</resultMap>
<select id="test9" resultMap="abab">
SELECT * FROM dept LEFT JOIN emp ON dept.deptno = emp.deptno WHERE dept.deptno = #{deptno}
</select>
接口
// 一对一
Emp test8(@Param("empno") int empno);
// 一对多
Dept test9(@Param("deptno") int deptno);
测试
@Test
public void test10(){
// 一对一
Emp emp = BatisMapper.getSqlSession().test8(2);
System.out.println(emp);
}
@Test
public void test11(){
// 一对多
Dept depts = BatisMapper.getSqlSession().test9(40);
System.out.println(depts);
}
pojo
public class Emp {
private int empno;
private String ename;
private String job;
private int salary;
private int mgr;
private int bonus;
private String hiredate;
private int deptno;
private Dept dept;
public class Dept {
private int deptno;
private String dname;
private String dlocation;
private List<Emp> emps;