★学习目标:
1、了解熟悉一对一查询
2、能够在MyBatis中使用@One注解实现一对一关联查询
★思考任务:
思考,如何在MyBatis中使用@One注解实现一对一关联查询
★任务学习
★知识要点:
MyBatis中使用@One注解实现数据表的一对一关联查询,其作用等同于XML配置文件中的<assocation>元素。
接下来,以4.2节中使用的tb_idcard和tb_person数据表为例,并基于注解@One实现tb_idcard和tb_person数据表之间的一对一关联查询,具体步骤如下。
(1)创建持久化类:
本案例使用4.2节中的IdCard类和Person类作为持久类。
(2)创建接口。
1)编写接口方法
在项目的com.itheima.dao包下创建IdCardMapper接口,在该接口中编写selectIdCardById()方法,通过id查询人员对应的身份证信息。
2)编写接口方法
在项目的com.itheima.dao包下创建PersonMapper接口,在该接口中编写selectPersonById(),通过id查询人员信息。
注意:在@Results注解中,可以包含多个@Result注解,一个@Result注解完成实体类中一个属性和数据表中一个字段的映射。
在@Result注解中,有column、property和one三个属性,它们的含义分别如下所示。
property属性用来指定关联属性,这里为card。
column属性用来指定关联的数据库表中的字段,这里为card_id。
one属性用来指定数据表之间属于哪种关联关系,通过@One注解表明数据表tb_idcard和tb_person之间是一对一关联关系。
(3)编写配置文件。
在核心配置文件mybatis-config.xml中的<mappers>元素下引入IdCardMapper和PersonMapper接口。
需要注意的是,由于mybatis-config.xml文件中的扫描方式是从上往下扫描,所以<mappers>元素下引入IdCardMapper和PersonMapper接口的位置,必须在引入IdCardMapper.xml和PersonMapper.xml文件位置前面,否则程序将会首先读取到引入的IdCardMapper.xml和PersonMapper.xml文件,程序将会报错。
(4)编写测试类。
为了验证上述配置,可以在测试类MyBatisTest中,编写测试方法selectPersonByIdTest()。

