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/RedOrange/p/17091653.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY