Mybatis为什么使用接口就可以调用了?

Mybatis为什么使用接口就可以调用了?

答:

  • 原始JDBC存在的问题:
1.频繁的获得或者关闭连接,然后使用数据库的连接池
2.sql语句还是在java代码中,不好维护,将sql交给xml
  • Mybatis的解决办法:
    Mybatis中并没有Mapper接口的实现类,它忽略了实现类,直接对Mapper接口进行代理。mapper接口开发方法只需要程序员编写mapper接口,他会由mybatis框架根据接口的定义创建接口的动态代理的对象,直接根据他的对象名的类型获取的,之后直接创建mapper就可以了。
  1. 首先调用mybatis.io的Resourse.getResource解析.xml的配置文件

  2. 然后传入配置文件的输入流再获得 一个sqlsessionFactory对象

  3. 然后再用sqlsessionfactory获得一个sqlsession对象

  4. (这里不像传统的jdbc直接执行SQL语句),而是用sqlsessioon.getMapper(Usermapper.class)获得代理对象

这里一直往下看的话,getMapper方法一直往下看的话,经过DefaultSqlSession、Configuration 类,中间会拿到knownMappers,他的key是Mapper的类型,value是一个MapperProxyFactory对象,这个对象中通过newInstance(mapperProxy)拿到mapperProxy的代理类。
拿到代理类后,他的动态代理的实现方法是通过JDK的动态代理,实现了InvocationHandler, Serializable接口,invoke(proxy, method, args, sqlSession)方法描述了代理要做的事情,代理做的事情,就是根据配置找到sql,判断是增删改查哪个,用对应的参数和语句封装,最后的话就是调用JDBC了,查询数据库,返回结果

  1. 拿到代理对象之后调用mapper中的查询方法就可以
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜程序设计

您的打赏将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值