非联合查询,一对多
设计一个方法 根据给定的deptno部门编号 查询部门信息+这个部门中的所有员工信息
设计一个方法 查询所有部门的信息 + 每一个部门中的所有员工信息
关键代码部分
dao.DeptDao
package dao;
import domain.Dept;
import org.apache.ibatis.session.SqlSession;
import util.MySqlSessionFactory;
import java.util.List;
public class DeptDao {
private SqlSession sqlSession = MySqlSessionFactory.getSqlSession(true);
//设计一个方法 根据给定的deptno部门编号 查询部门信息+这个部门中的所有员工信息
public Dept selectOne(Integer deptno){
return sqlSession.selectOne("selectOne",deptno);
}
//设计一个方法 查询所有部门的信息 + 每一个部门中的所有员工信息
public List<Dept> selectAll(){
return sqlSession.selectList("selectAll");
}
}
mapper.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">
<mapper namespace="dao.DeptDao">
<select id="selectOne" resultMap="selectEmpList">
select deptno,dname,loc from dept where deptno = #{deptno}
</select>
<select id="selectAll" resultMap="selectEmpList">
select deptno,dname,loc from dept
</select>
<!--自定义一个赋值的规则-->
<resultMap id="selectEmpList" type="domain.Dept">
<!--id一般用于主键列,result是普通列-->
<id property="deptno" column="deptno"></id>
<result property="dname" column="dname"></result>
<result property="loc" column="loc"></result>
<collection property="empList" javaType="java.util.List" ofType="domain.Emp" select="selectEmpForDept" column="deptno"></collection>
</resultMap>
<select id="selectEmpForDept" resultType="domain.Emp">
select * from myemp where deptno = #{deptno}
</select>
</mapper>
联合查询
关键代码部分
dao.DeptDao不变
mapper.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">
<mapper namespace="dao.DeptDao">
<select id="selectOne" resultMap="selectEmpList">
select d.deptno,d.dname,d.loc,m.empno,m.ename,m.sal from dept d inner join myemp m
on d.deptno = m.deptno where d.deptno = #{deptno}
</select>
<select id="selectAll" resultMap="selectEmpList">
select d.deptno,d.dname,d.loc,m.empno,m.ename,m.sal from dept d inner join myemp m
on d.deptno = m.deptno
</select>
<!--自定义一个赋值的规则-->
<resultMap id="selectEmpList" type="domain.Dept">
<!--id一般用于主键列,result是普通列-->
<id property="deptno" column="deptno"></id>
<result property="dname" column="dname"></result>
<result property="loc" column="loc"></result>
<collection property="empList" javaType="java.util.List" ofType="domain.Emp">
<id property="empno" column="empno"></id>
<result property="ename" column="ename"></result>
<result property="sal" column="sal"></result>
</collection>
</resultMap>
</mapper>