非联合查询,一对多
    image.png
    image.png
    设计一个方法 根据给定的deptno部门编号 查询部门信息+这个部门中的所有员工信息
    设计一个方法 查询所有部门的信息 + 每一个部门中的所有员工信息
    关键代码部分
    dao.DeptDao

    1. package dao;
    2. import domain.Dept;
    3. import org.apache.ibatis.session.SqlSession;
    4. import util.MySqlSessionFactory;
    5. import java.util.List;
    6. public class DeptDao {
    7. private SqlSession sqlSession = MySqlSessionFactory.getSqlSession(true);
    8. //设计一个方法 根据给定的deptno部门编号 查询部门信息+这个部门中的所有员工信息
    9. public Dept selectOne(Integer deptno){
    10. return sqlSession.selectOne("selectOne",deptno);
    11. }
    12. //设计一个方法 查询所有部门的信息 + 每一个部门中的所有员工信息
    13. public List<Dept> selectAll(){
    14. return sqlSession.selectList("selectAll");
    15. }
    16. }

    mapper.DeptMapper.xml

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="dao.DeptDao">
    6. <select id="selectOne" resultMap="selectEmpList">
    7. select deptno,dname,loc from dept where deptno = #{deptno}
    8. </select>
    9. <select id="selectAll" resultMap="selectEmpList">
    10. select deptno,dname,loc from dept
    11. </select>
    12. <!--自定义一个赋值的规则-->
    13. <resultMap id="selectEmpList" type="domain.Dept">
    14. <!--id一般用于主键列,result是普通列-->
    15. <id property="deptno" column="deptno"></id>
    16. <result property="dname" column="dname"></result>
    17. <result property="loc" column="loc"></result>
    18. <collection property="empList" javaType="java.util.List" ofType="domain.Emp" select="selectEmpForDept" column="deptno"></collection>
    19. </resultMap>
    20. <select id="selectEmpForDept" resultType="domain.Emp">
    21. select * from myemp where deptno = #{deptno}
    22. </select>
    23. </mapper>

    联合查询
    关键代码部分
    dao.DeptDao不变
    mapper.DeptMapper.xml

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="dao.DeptDao">
    6. <select id="selectOne" resultMap="selectEmpList">
    7. select d.deptno,d.dname,d.loc,m.empno,m.ename,m.sal from dept d inner join myemp m
    8. on d.deptno = m.deptno where d.deptno = #{deptno}
    9. </select>
    10. <select id="selectAll" resultMap="selectEmpList">
    11. select d.deptno,d.dname,d.loc,m.empno,m.ename,m.sal from dept d inner join myemp m
    12. on d.deptno = m.deptno
    13. </select>
    14. <!--自定义一个赋值的规则-->
    15. <resultMap id="selectEmpList" type="domain.Dept">
    16. <!--id一般用于主键列,result是普通列-->
    17. <id property="deptno" column="deptno"></id>
    18. <result property="dname" column="dname"></result>
    19. <result property="loc" column="loc"></result>
    20. <collection property="empList" javaType="java.util.List" ofType="domain.Emp">
    21. <id property="empno" column="empno"></id>
    22. <result property="ename" column="ename"></result>
    23. <result property="sal" column="sal"></result>
    24. </collection>
    25. </resultMap>
    26. </mapper>