原生一对多查询

2020-11-18  本文已影响0人  _FireFly_

查询一个emp员工的所有信息 包括员工所在部门信息 (这是一对一,一个员工只对应一个部门)

实体Emp

package domain;

public class Emp {

    //自有属性
    private Integer empno;
    private String ename;
    private Float sal;
    //关联属性  deptno-->外键-->对象
    private Dept dept;

    public Emp() {}
    public Emp(Integer empno, String ename, Float sal, Dept dept) {
        this.empno = empno;
        this.ename = ename;
        this.sal = sal;
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", sal=" + sal +
                ", dept=" + dept +
                '}';
    }

    public Integer getEmpno() {
        return empno;
    }
    public void setEmpno(Integer empno) {
        this.empno = empno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public Float getSal() {
        return sal;
    }
    public void setSal(Float sal) {
        this.sal = sal;
    }
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }

}

实体Dept

package domain;

import java.util.List;

public class Dept {

    //自有属性
    private Integer deptno;
    private String dname;
    private String loc;
    //为了根据deptno部门编号查询 部门中所有的人更加方便
    //也存储一个关联属性     一个部门中有好多员工  List<Emp>
    private List<Emp> empList;


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

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                ", empList=" + empList +
                '}';
    }

    public Integer getDeptno() {
        return deptno;
    }
    public void setDeptno(Integer 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> getEmpList() {
        return empList;
    }
    public void setEmpList(List<Emp> empList) {
        this.empList = empList;
    }
}

EmpDao

package dao;

import domain.Emp;
import org.apache.ibatis.session.SqlSession;
import util.MyUtil;

import java.util.List;

public class EmpDao {

    //一个sqlSession对象
    private SqlSession sqlSession = MyUtil.getSqlSession(true);


    //设计一个方法 提供一个empno员工编号 查询员工的信息+部门信息
    public Emp selectOne(Integer empno){
        return sqlSession.selectOne("selectOne",empno);
    }

    //设计一个方法 提供一个查询所有员工信息+部门信息
    public List<Emp> selectAll(){
        return sqlSession.selectList("selectAll");
    }
}

EmpMapper.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">
<mapper namespace="dao.EmpDao">

    <!--自定义规则 方式一 两条语句查询-->
    <!--<resultMap id="selectEmp" type="domain.Emp">-->
        <!--<id property="empno" column="empno"></id>-->
        <!--<result property="ename" column="ename"></result>-->
        <!--<result property="sal" column="sal"></result>-->
        <!--<association property="dept" javaType="domain.Dept" select="selectDeptForEmp" column="deptno"></association>-->
    <!--</resultMap>-->
    <!--<select id="selectDeptForEmp" resultType="domain.Dept">-->
        <!--select deptno,dname,loc from dept where deptno = #{deptno}-->
    <!--</select>-->

    <!--自定义规则 方式二 一条语句查询 联合-->
    <resultMap id="selectEmp" type="domain.Emp">
        <id property="empno" column="empno"></id>
        <result property="ename" column="ename"></result>
        <result property="sal" column="sal"></result>
        <association property="dept" javaType="domain.Dept">
            <id property="deptno" column="deptno"></id>
            <result property="dname" column="dname"></result>
            <result property="loc" column="loc"></result>
        </association>
    </resultMap>

    <!--=======================================================-->
    <select id="selectOne" resultMap="selectEmp">
        <!--方式一-->
--         select empno,ename,sal,deptno from emp where empno = #{empno}
        <!--方式二-->
        select e.empno,e.ename,e.sal,d.deptno,d.dname,d.loc from emp e left outer join dept d on e.deptno = d.deptno where e.empno = #{empno}
    </select>
    <select id="selectAll" resultMap="selectEmp">
        <!--方式一-->
--         select empno,ename,sal,deptno from emp
        <!--方式二-->
        select e.empno,e.ename,e.sal,d.deptno,d.dname,d.loc from emp e left outer join dept d on e.deptno = d.deptno
    </select>
</mapper>
上一篇 下一篇

猜你喜欢

热点阅读