当前位置: 首页 > 网络应用技术

Mybatis执行过程和源代码分析

时间:2023-03-06 20:13:02 网络应用技术

  我们在日常工作中广泛使用Mybatis作为数据持久性框架,但是Mybatis的执行过程是什么?您曾经学会过吗?这篇文章将从源代码的角度分析Mybatis的工作原理。

  首先查看一个简单的示例,请使用服务调用映射器接口,然后首先编写一个简单的映射器:首先编写一个简单的映射器:

  调用映射器在服务中的方法:

  在注射此映射器并在服务中调用它时,您知道您目前注入了什么吗?

  通过调试,您可以知道此时实际的StudentMapper是一种代理对象。以下将从Myabtis环境初始化开始,以分析代理对象的过程。

  集成弹簧和Mybatis时,将配置XML或注释方法。在本文中,注释方法被用作一个例子:

  看继承实现关系:

  让我们铺平两个非常重要的界面的方式,然后。

  FactoryBean:

  它是春季的特殊豆子,可以通过其方法返回对象实例。《中国法》的实现:

  它在这里用于创建和返回一个,在春季 +mybatis的环境中,我们使用它来行动。

  初始化:

  接口中只有一种方法。所有实现接口的类都必须在Bean初始化之前调用。可以看到,在上述方法中,如果是空的,则将创建此方法。

  通过通话方法,终于返回一个示例,在此保留了一个非常重要的对象。

  当注释配置mybatis时,通过指定映射器来存储的软件包可以自动将接口实现为我们的类。那么如何实现?

  单击源代码,发现上面有一个非常重要的注释:

  接口配置方法暴露于用户,这意味着可以创建用户并用来手动注册弹簧容器。

  查看方法中的核心代码:

  主要创建一个映射器扫描仪以打开扫描。

  这是生成映射器的BEAN定义的进一步处理。输入方法:

  请注意框架代码和上面的注释,首先要查看获得初始值的初始值:

  等待执行:

  通过用Type替换原始的BeanClass类型。这是映射器接口加载定义阶段中非常重要的步骤,这也是生成代理对象的关键。

  看继承关系:

  继承类实现了接口,因此我们仍然找到一种方法:

  如果是n中的方法:

  首先获得非常重要的配置类,然后检查该方法。最终方法称为:

  红色框中的代码创建了映射器的代理出厂对象(不是映射器的代理对象),并将其放入此地图中。

  在此步骤中,它是简单的初始化,并且我们自己的映射器的类型被传递给了它,并且并没有真正产生代理对象。

  XML文件的分析以后续方法完成。每个SQL方法被解析为对象,并添加到配置类对象中。

  MapperFactoryBean终于返回了什么?

  由于实现了接口,我们可以看到返回的方法:

  最终呼叫方法:

  Mybatis刚刚在这里生成,帮助我们实例化并返回了代理对象。

  如何使用和实例化生成代理:

  在这一点上,我们已经弄清楚了本文开头如何生成文章。

  在StudentServiceImpl的查询方法中播放断点跟踪语句,您会发现实际执行是代理类中的方法。

  在作为代理商类的同时,它实现了接口,因此该方法是实际的代理逻辑。

  最终呼叫方法实际上在SQL语句中执行。

  在此方法中,根据SQL语句执行类型,执行相应的方法并返回给用户。因此,Mybatis在春季环境中完成。

  如果您认为这对您有帮助,您的朋友可以喜欢并转发它。非常感谢

  公共帐户,加一个朋友,并赞美