Mybatis入门-一对多关联查询(八)-resultMap示例

这里我们做一个案例,一个员工对应一个部门,在员工角度来说是一对一查询,那从部门角度来说,一个部门有多个员工,所以属于一对多查询

修改Dept表,添加员工集合属性

public class Dept {
private int deptno;
private String dname;
private String loc;

//部门表下添加员工集合属性
private List<Emp> emps;

public Dept() {
}

public Dept(int deptno, String dname, String loc, List<Emp> emps) {
    this.deptno = deptno;
    this.dname = dname;
    this.loc = loc;
    this.emps = emps;
}

public int getDeptno() {
    return deptno;
}

public void setDeptno(int deptno) {
    this.deptno = deptno;
}

public String getDname() {
    return dname;
}

public void setDname(String dname) {
    this.dname = dname;
}

public String getLoc() {
    return loc;
}

public void setLoc(String loc) {
    this.loc = loc;
}

public List<Emp> getEmps() {
    return emps;
}

public void setEmps(List<Emp> emps) {
    this.emps = emps;
}
}

DeptMapper.java

public interface DeptMapper {
//通过部门编号查询部门
Dept FindDeptByid(int deptno);
}

DeptMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace填写mapper接口的全限定名-->
<mapper namespace="com.msb.mapper.DeptMapper">

<resultMap id="findemp" type="com.msb.pojo.Dept">
    <id column="deptno" property="deptno"></id>
    <result column="dname" property="dname"></result>
    <result column="loc" property="loc"></result>
    <!--集合我们这里用Collection标签-->
    <collection property="emps" ofType="com.msb.pojo.Emp">
        <id column="empno" property="empno"></id>
        <result column="ename" property="ename"></result>
        <result column="job" property="job"></result>
        <result column="deptno" property="deptno"></result>
    </collection>
</resultMap>

<select id="FindDeptByid" parameterType="int" resultMap="findemp">
    select e.empno,e.ename,e.job,e.deptno,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno where d.deptno = #{deptno}
</select>
</mapper>

测试类

public class MabatisTest {
private SqlSessionFactory factory;

@Before
public void init() throws IOException {
    initLogRecord.initLog();
    InputStream resource = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    factory = builder.build(resource);
}


@Test
public void test1() throws Exception {
    SqlSession sqlSession = factory.openSession();
    //传入参数为想获得接口的实现类
    DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
    Dept dept = mapper.FindDeptByid(20);
    System.out.println(dept.getDeptno()+";"+dept.getDname());
    for (Emp emp:
         dept.getEmps()) {
        System.out.println(emp.getEname()+";"+emp.getJob());
    }
    sqlSession.close();
}
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值