首页 > 其他分享 >【mybatis框架学习】三、invoke方法逻辑编排

【mybatis框架学习】三、invoke方法逻辑编排

时间:2022-10-01 17:34:03浏览次数:47  
标签:mapper invoke 编排 实例 mybatis 方法

上一篇一直有提高一个词,编排。

都说编程,编程,编排也就容易理解了。

 

像我们常用的框架,spring、mybatis,都是将一些固有的流程,简化,抽象,编排起来,在留有可拓展的接口之后,全部封装好,让我们不用再去关心具体细节

编排这件事也就变得可以充满神秘感,等待我们去了解。动态代理的invoke方法,就是一个很容易作为编排入门练手的东西

 

invoke方法中,针对Method实例最常用的操作就是获取其name属性,也就是当前被调用的方法名称,此时可以用最粗暴的if、switch语句,依据方法名称进行任意不同的逻辑处理

 

然后我们来看看,在mybatis中是如何使用动态代理的:

org.apache.ibatis.binding.MapperRegistry中,通过getMapper方法,可以获取到动态代理创建的接口实例,基本上它就是离我们日常使用很近的一个方法了

可以看到,入参传入了mapper接口类,然后尝试以此为key去内部的HashMap中获取代理类的工厂类,最后通过工厂类完成实例化操作

 

 

 

上方提到的那个内部HashMap,就是通过解析配置sql语句的xml,完成内容初始化的

如图所示,其中namespace字段配置值对应了mapper接口的全类名,id字段配置值对应了方法名

偷瞄一下可以看到MapperRegistry中的addMapper方法,初始化就是根据mapper接口类构造了一个MapperProxyFactory实例

 

标签:mapper,invoke,编排,实例,mybatis,方法
From: https://www.cnblogs.com/rebeldancer/p/16747465.html

相关文章

  • 【mybatis框架学习】一、序言
    相关内容需要基本的mybatis框架使用经验,不会过多赘述基本常识性的内容。关于mybatis的使用,概括来讲就是:配置jdbc连接信息、配置sql语句、定义mapper接口、定......
  • mybatis puls学习笔记(二)
    mapperpackagecom.ychen.mybatis.mapper;importcom.baomidou.mybatisplus.core.conditions.Wrapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom......
  • Mybatis plus代码生成器
    案例一demo为​​chenx/mybatisplus-demo​​​​参考​​​​案例​​项目初始结构数据库新建表项目配置启动CodeGenerator类中的main方式,输入表名,生成代码案例二demo为​......
  • Mybatis plus案例
    前言当表名为user时,会多生成2个实体类正常情况下生成的类测试是否可以直接在当前​​mybatis代码生成器的项目​​中开发启动项目后测试,发现当前项目只能用来生成代码即使项......
  • mybatis plus 项目模板
    前言​​案例地址​​项目搭建新建1个springboot项目,导入所需依赖点击查看详情<dependencies><dependency><groupId>org.springframework.boot</groupId>......
  • MyBatisPlus查询对象转QueryWrapper工具类
    技术背景在使用MyBatisPlus技术实际项目中,尤其是后台管理系统之类的项目中,经常会出现大量的需要将查询对象转换成QueryWrapper的应用场景,这时候就需要编写出现大量的转换代......
  • mybatis核心配置文件
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-conf......
  • MyBatis接口代理对象的2种方式
    方式1使用MyBatis自带的API生成代理对象 SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession缺点:接口代理对象需要手动 getMapper() <dependen......
  • 源码学习之MyBatis的底层查询原理
    导读本文通过MyBatis一个低版本的bug(3.4.5之前的版本)入手,分析MyBatis的一次完整的查询流程,从配置文件的解析到一个查询的完整执行过程详细解读MyBatis的一次查询流程,通过本......
  • mybatis 使用if 判断字符串
    mybatis动态sql中if判断使用的ognl表达式,现在分3中情况说明并验证。一、情况说明:传入的itemCode为参数传入mybatis<iftest='itemCode!=nullanditemCode!=""and......