MyBatis中SqlSession的getMapper()方法实现DAO接口的连接逻辑

MyBatis中SqlSession的getMapper()方法实现DAO接口的连接逻辑

学习了MyBatis之后,知道SqlSession.getMapper()方法可以帮我们自动实例化DAO层接口,那么是如何实现的呢?之间的连接逻辑是什么,就是因为DAO层接口名和xml映射文件名一致吗?
那么把DAO层接口名修改下,看看和xml映射文件名不一致的情况下会怎样

开始测试
测试一:接口名和映射文件名一致
在这里插入图片描述
这是原来的news的dao层接口和news的映射文件,接口名与xml映射文件名是一致的,测试是可以成功的,然后修改dao接口名字如下
在这里插入图片描述
单元测试
在这里插入图片描述
发现测试是成功的,接口名并不是必须与映射文件名一致,然后去xml看下,发现了这个标签

在这里插入图片描述
在这里插入图片描述
发现当对接口名做出修改时,namespace的值会自动修改,说明这之间一定有引用关系,那么getMapper()实现接口时会不会时根据这个namespace来做连接逻辑的呢?

那就让接口名和映射文件名一致,namespace的值修改下看看
测试二:接口名与映射文件一致,命名空间名不一致
在这里插入图片描述
单元测试
在这里插入图片描述
在这里插入图片描述
发现抱错,getMapper()方法无法实现接口

总结:接口名并不是必须与xml映射文件名一致,二者是通过mapper标签里的namespace属性来进行连接的。
举个例子:定义接口A,映射文件名叫B.xml,B.xml里的mapper标签namespace=“包名.A”,那么在getMapper(A.class)的到的返回值就是以B.xml里的sql语句实现的A接口
至于方法之间的连接逻辑就是通过标签里的id=“方法名”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值