Mybatis原理解析

mabatis启动流程:

  1. 伴随tomcat,在tomcat启动时候,cat扫描web.xml文件,找到mabatis配置文件路径,mabatis配置文件包括但不限于xml文件。
    对于web.xml来说,只能引入其他xml文件。如果mabatis配置文件(或其他配置文件)是其他类型文件,非xml文件是由xml文件记录它的路径。
    举例:
    假设有一个文件a.properties,那么引入路径是:在web.xml中,引入自定义的b.xml,在b.xml中记录了a.properties的路径。
    a.properties触发流程
    首先在web.xml中注册启动类,在启动类被触发之后,启动类会在web.xml中找到b.xml,进一步解析b.xml,找到a.properties路径,读出a.properties的配置,

a.properties配置了什么?
dao层各包(包括实体包、xml包、mapper.java所在包(mapper接口所在包))路径;

  1. 读完配置文件后,自定义java文件扫描配置的包,首先扫描mapper.java,这个包下定义的接口均会被扫描到。之后通过反射拿到接口类信息,根据接口类信息生成实现类,以及在实现类中将接口类声明的方法(空方法,之后需要注入)也实现出来,连接数据库需要mapper.xml中的sql语句,接下来去扫描xml所在的包,扫描所有的xml文件,根据配置文件的声明,对应相应的mapper接口,例如,
    对应的是com.stone.easy.ten.mapper.TenProductMapper接口
    ,sql语句通过id对应到相应的方法,填充进空方法。生成了完整的接口实现类,启动过程结束

代码生成均是通过cglib字节码注入生成。

调用:
调用哪个接口,cglib生成哪个实现类实例,形成单例模式,实现类直接执行。由于实现类实例是生成的无法直接执行,只能通过invoke()执行,需要动态代理。

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值