关于“MyBatis实现表连接查询写法(三种对应关系)的方法总结”的完整攻略,我可以提供如下内容:
1. 需求
在实际开发中,经常需要对多个表进行联合查询,通常使用某些条件将多个表的数据关联起来。
2. 联接查询分类
联接查询可分为三种对应关系:
2.1 一对一
一对一映射是指两个表中的一行只能对应另一个表中的一行, 例如 一个学生对应一个身份证,一个身份证也只能对应一个学生。
2.2 一对多
一对多映射是指两个表中的一行能对应另一个表中的多行,例如 一个学生可以有多个选课记录或成绩记录,一个选课记录或成绩记录又只对应一个学生。
2.3 多对多
多对多映射是指两个表中的一行能对应另一个表中的多行,反过来也一样,例如 许多学生可以同时选多门课程,而一门课程也可以被很多学生同时选择。
3. 实现方法
MyBatis实现三种表连接查询的方法也有区别,分别为:
3.1 一对一
在resultMap中嵌套另一个resultMap即可。示例:
<resultMap id="user" type="User">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
<result column="role_id" property="role.id" />
<association property="role" resultMap="com.xxx.RoleMapper.role" />
</resultMap>
<resultMap id="role" type="Role">
<id column="id" property="id" />
<result column="rolename" property="rolename" />
</resultMap>
3.2 一对多
在一方对应的resultMap中添加collection标签即可。示例:
<resultMap id="users" type="User">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
<collection property="orders" ofType="Order">
<id column="id" property="id" />
<result column="order_no" property="orderNo" />
<result column="amount" property="amount" />
<result column="user_id" property="userId" />
</collection>
</resultMap>
3.3 多对多
在多方对应的resultMap中添加collection标签即可。示例:
<resultMap id="users" type="User">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
<collection property="roles" ofType="Role">
<id column="id" property="id" />
<result column="rolename" property="rolename" />
</collection>
</resultMap>
以上就是这个话题的完整攻略,希望可以对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis实现表连接查询写法(三种对应关系)的方法总结 - Python技术站