mybatis 表与表 关联查询 (二)
Mapper
@Mapper public interface EmpMapper { /** * 查询所有的职工信息 */ List<Emp> getAllEmp(); /** * 查询职工及职工所对应的部门信息 */ Emp getEmpAndDept(@Param("eid") Integer eid); /** * 分步查询查询职工及职工所对应的部门信息 * 分步查询第一步:查询职工信息 */ Emp getEmpAndDeptByOne(@Param("eid") Integer eid); /** * 分步查询查询部门及部门中所有的职工信息 * 分步查询第二步:根据did查询职工信息 */ List<Emp> getDeptAndEmpByTwo(@Param("did") Integer did); }
Mybatis
<!-- resultMap:设置自定义映射关系 id:唯一标识,不能重复 type:设置映射关系中的实体类类型 子标签: id:设置主键的映射关系 result:设置普通字段的映射关系 属性: property:设置映射关系中的属性名,必须是type属性所设置的实体类类型中的属性名 column:设置映射关系中的字段名,必须是sql语句查询出的字段名 --> <resultMap id="empResultMap" type="com.example.bootdemo.pojo.Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> </resultMap> <select id="getAllEmp" resultMap="empResultMap"> select * from m_emp </select> <!--处理多对一映射关系方式一:级联属性赋值--> <resultMap id="empAndDeptResultMapOne" type="com.example.bootdemo.pojo.Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <result property="dept.did" column="did"></result> <result property="dept.deptName" column="dept_name"></result> </resultMap> <!--处理多对一映射关系方式二:association--> <resultMap id="empAndDeptResultMapTwo" type="com.example.bootdemo.pojo.Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <!-- association:处理多对一的映射关系 property:需要处理多对的映射关系的属性名 javaType:该属性的类型 --> <association property="dept" javaType="com.example.bootdemo.pojo.Dept"> <id property="did" column="did"></id> <result property="deptName" column="dept_name"></result> </association> </resultMap> <select id="getEmpAndDept" resultMap="empAndDeptResultMapTwo"> select * from m_emp left join m_dept on m_emp.did = m_dept .did where m_emp.eid = #{eid} </select> <resultMap id="empAndDeptByStepResultMap" type="com.example.bootdemo.pojo.Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <!-- select:设置分步查询的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名) column:设置分布查询的条件 fetchType:当开启了全局的延迟加载之后,可通过此属性手动控制延迟加载的效果 fetchType="lazy|eager":lazy表示延迟加载,eager表示立即加载 --> <association property="com.example.bootdemo.pojo.Dept" select="com.example.bootdemo.mapper.DeptMapper.getEmpAndDeptByStepTwo" column="did" fetchType="eager"></association> </resultMap> <select id="getEmpAndDeptByOne" resultMap="empAndDeptByStepResultMap"> select * from m_emp where eid = #{eid} </select> <select id="getAllEmpOld" resultType="com.example.bootdemo.pojo.Emp"> select * from m_emp </select> <select id="getDeptAndEmpByTwo" resultType="com.example.bootdemo.pojo.Emp"> select * from m_emp where did = #{did} </select>
本文来自博客园,作者:格,转载请注明原文链接:https://www.cnblogs.com/yuangyuan/p/16451627.html