MyBatis多表查询操作——XML+interface(接口)(多对多)

本文介绍如何使用MyBatis实现多对多关系的数据查询,包括实体类改造、映射文件配置、接口定义及测试类编写,适用于User、Groups、UserGroups三表关联场景。

题目:使用Mybatis,使用XML+接口方式查询表中数据(多对多)

一、思路:

思路(实体类+实体类映射文件+接口+mybatis主配置文件+测试类):
我们的目标是要通过一条sql语句,把三张表里面的数据查询出来。

三张表分别:User,Groups,UserGroups。

第一:改造我们的实体类
1、给User类加个集合属性,该集合的数据类型为Groups类类型
2、给Groups类加个集合属性,该集合的数据类型为User类类型
3、再写UserGroups类
注意:实体类的数据类型和个数要对应数据库中的数据类型和个数学。

第二:写Groups的实体类映射文件和User的实体类映射文件
1、特别注意:以前我们写的select元素的返回值类型是单个实体类类型,而现在改成了自定义返回值类型,用resultMap表示。resultType改成resultMap。
2、然后再自定义resultMap的内容。
定义resultMap里面的内容是重点,务必掌握

第三:自定义接口(接口的方法名必须跟Groups的实体类映射文件select标签的id名一致)

第四:主配置文件里面的别名配置是根据自己的实体类来配置的(可使用:package name=“包名” 代表扫描指定包下的所有实体类文件 )

第五:编写测试类,把查询的结果打印输出显示

二、实际操作

第一步:创建一个数据库,名字为mybatis_test02;在该数据库中创建三张数据表,名字分别为user,groups,usergroups;

Create database mybatis_test02;(创建数据库)

在这里插入图片描述

第二步:在我们的java工程的bean包下面新建三个实体类分别为User,Groups,UserGroups,该类的属性和创建表的字段一致。并给他们get、set方法。(给User类加个集合属性,该集合的数据类型为Groups类类型,给Groups类加个集合属性,该集合的数据类型为User类类型)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三步:配置groupsMapper.xml文件和userGroupsMapper.xml文件。
1、注意:以前我们写的select元素的返回值类型是单个实体类类型,而现在改成了自定义返回值类型,用resultMap表示。resultType改成resultMap。
2、然后再自定义resultMap的内容。
3、因为是多对多所以要配置两个实体映射文件

在这里插入图片描述
在这里插入图片描述

注意:编写Mapper文件时,为防止sql语句错误可以先在数据库里进行测试

第四步:自定义接口
在这里插入图片描述

第五:配置config.xml主配置文件(主配置文件里面有三项实体类的别名配置和两项实体类映射文件配置)
在这里插入图片描述

第六:编写测试类
在这里插入图片描述

结果:
在这里插入图片描述

总结:
1.SqlSession 的实例不是线程安全的,因此是不能被共享的。

2.SqlSession每次使用完成后需要正确关闭,这个关闭操作是必须的。

3.SqlSession可以直接调用方法的id进行数据库操作。

4.config.xml主配置文件中别名和映射都可用package(代表扫描指定包下的所有)。

5.接口中:接口方法名必须跟Groups的实体类映射文件select标签的id名一致

6.groupsMapper.xml实体映射文件中的select属性的路径是UserGroups实体类映射文件的命名空间加select标签的id名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值