真实情况中,我们处理的是数据库多个表关联查询的任务,如何处理种业务有助于进一步理解Mybatis的应用
目录
1 搭建环境
1.1 实体类pojo
学生和老师:学生关联老师

1.2 接口

1.3 接口的配置文件

1.4 核心配置文件绑定xml

1.5 测试

2 多对一的处理 association
多个学生对应一个老师
2.1 未关联Student和Teacher的查询


分析:
Q:为什么查不出来教师的信息?
A:因为学生的实体类的属性名 Teacher 和实体类的字段名 tid 不一致
解决办法就是:结果集映射 将两者一致
2.2 方案一
先查询出所有学生的信息------>再根据学生的tid找到对应的老师
select * from Student-------------> select * from Teacher where id = tid

<?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="com.kuang.dao.StudentMapper">
<!-- stu: 接口中定义的方法 -->
<select id="stu" resultMap="STUDENT">
select * from student
</select>
<!-- type: stu的类型是Student -->
<resultMap id="STUDENT" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" column="tid" javaType="Teacher" select="GetTeacher"/>
<!-- association: 是对象的时候使用( Teacher teacher对象)
column:数据库字段
javaType:这里用了别名(扫描包)Teacher的实体类
select:传入子语句
-->
</resultMap>
<select id="GetTeacher" resultType="Teacher">
select * from teacher where id=#{tid}
<!-- {tid}里面的tid可以自定义,不一定为tid,这里为了规范,强调将association的column的tid传过来-->
</select>
</mapper>


2.3 方法二
结果嵌套方法


3 一对多的处理 collection
3.1 未关联Student和Teacher的查询


3.2 方案一


3.3 方案二


本文详细讲解了如何通过Mybatis进行数据库多表关联查询,涉及多对一和一对一的关系处理,包括未关联查询问题、解决方案及两种查询方式:方法一通过子查询获取教师信息,方法二结果集嵌套。同时介绍了如何在Student和Teacher实体类及Mapper接口中正确配置关联映射。
485

被折叠的 条评论
为什么被折叠?



