使用注解的方式,MyBatisConfig.xml文件中mappers标签中的配置
有两种方式1.配置package标签 2.配置mapper标签
<mappers><!--mappers引入映射配置文件-->
<!--package标签:扫描包含映射关系的接口所在的包也可以-->
<!--<package name="com.module5.mapper"/>--><!--引入com.module5.mapper包中的所有映射关系-->
<!--mapper标签:扫描使用注解的接口-->
<mapper class="com.module5.mapper.StudentMapper"/>
</mappers>
注解
查询 插入 删除 更新的注解
测试语句中通过动态代理获取接口的实现类对象,从而调用接口中的方法
多表查询使用注解的方式
@Result: 实现结果集的封装
@Results: 可以与@Result一起封装多个结果集
column="数据库的列名或别名"
property="成员变量名"如果名称一一对应,并且不是复杂类型,可以省略不写
一、一对一的数据表
1.首先创建实体类card和person,拥有一下的属性
一对一的表,让card持有person
2.创建包,并配置MyBatisConfig.xml文件
接口在以下的软件包中
3.PersonMapper接口中的配置
因为card类中持有person对象,在PersonMapper接口中的方法时根据id查询
要传入的id则是CardMapper接口中pid(因为card表中的pid外键关联person表中的id)
4.CardMapper接口中的配置
5.测试
二、一对多
1.创建实体类classes student
classes中只有student泛型的list集合
2.配置MyBatisConfig.xml文件中的mappers标签
3.StudentMapper接口
抽象方法 selectByCid(Integer cid) 根据班级编号查询学生,返回值是student泛型的list集合
( 因为学生表的cid班级编号外键关联classes表中的id )
这个地方的cid,通过下面的ClassesMapper接口中的配置将id传过来
4.ClassesMapper接口
其实和一对一差不多,只是这个地方返回值是一个List集合类型的
5.测试
三、多对多(课程和学生之间)
1.实体类
学生表中持有课程对象,这个对象是course泛型的List集合
将多对多的关系转化成一对多
这需要引入第三张表选课表stu_cr,但是这个表不需要写成实体类
stu_cr学科表中的字段
id 选课编号 sid 学生学号 cid课程编号
2.配置MyBatisConfig.xml文件中的mappers标签
3.CourseMapper接口
将course表和stu_cr表结合,再通过学生id进行查找,这就转化成了一对多的关系
学生学号从StudentMapper接口中传过来
4.StudentMapper接口
查询全部学生,有重复的,使用distinct进行去重
5.测试
如果感觉这样麻烦,可以将所有需要的属性都放到一个大表中,然后写一个sql语句,通过注解的方式进行查询
1.实体类
2.创建软件包,配置MyBatisConfig.xml文件中的mappers标签
3.接口
4.测试