mybatis 简单明了

这篇具有很好参考价值的文章主要介绍了mybatis 简单明了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先定义MapperScan

mybatis 简单明了

MapperScan会(Import)导入MapperScanRegistrar。下文会讲到这个import什么时候被解析,这个类很重要。这个类主要功能是扫描path下的bean定义(definition)扫描进来。

mybatis 简单明了 Register 负责扫描bean,就是扫描那些mapper接口。mybatis 简单明了

doScan方法(核心方法)

mybatis 简单明了

这个register方法是什么时候执行的?

上文说过由于它是注释类上imports进来的,项目启动后被@Configuration的类都会被configurationclasspostprocesor parse。解析的时候会把imports注释里面的类放到Map

先Parse class

mybatis 简单明了

处理类上的Import标签

mybatis 简单明了

把Register放到Map,等待调用

mybatis 简单明了

mybatis 简单明了

configurationclasspostprocessor  reader方法的时候专门有一步来处理这个Map,遍历这个map会调用循环调用所有Register对象的registerBeanDefinitions 方法。

调用register

mybatis 简单明了

这样scan的时候最重要的一步是把mapper接口的beanclass设置成这个factorybean.可以想象成一个代理:

mybatis 简单明了

 Mapper类的beanclass设置为MapperFactoryBean。FactoryBean是一种特殊的bean。

mybatis 简单明了

MapperFactoryBean会重载getObject方法。这样对Mapper类的实例就委托给了这个方法。这个方法会生成代理。最终这个mapper对象是MapperProxy,mapperProxy调用methodProxy。

总结:mybatis主要用到imports功能

@Import(MapperScannerRegistrar.class)

configurationClass解析的时候会把Register类固定写死getImportBeanDefinitionRegistrars去执行。ImportResource和ImoprtRegister会单独处理。

loadBeanDefinitionsFromImportedResources(configClass.getImportedResources());
loadBeanDefinitionsFromRegistrars(configClass.getImportBeanDefinitionRegistrars());

把path下的bean都交给RegisterBean单独按mybatis的业务客制化解析。文章来源地址https://www.toymoban.com/news/detail-480829.html

到了这里,关于mybatis 简单明了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot学习随笔- 集成JSP模板(配置视图解析器)、整合Mybatis(@MapperScan注解的使用)

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 在main创建webapp,然后创建index.jsp进行测试,在访问之前需要进行一个设置,否则springboot是找不到jsp页面的 修改jsp无需重启应用 数据库访问框架:hibernate、jpa、mybatis【主流】 SpringBoot(微框架) = Spring(工厂) + SpringMV

    2024年02月05日
    浏览(35)
  • 答疑解惑:解释在Mybatis-Spring下@Mapper与@MapperScan为何不能同时生效以及实现动态条件注册Mapper接口

    若项目中使用了@MapperScan注解后,则@Mapper注解不再生效 , 原因是:@MapperScan注解 会执行@Import(MapperScannerRegistrar.class),而MapperScannerRegistrar又会注册MapperScannerConfigurer BEAN,在MapperScannerConfigurer BEAN中会完成基于配置的包目录扫描注册所有mapper interface代理BEAN,而@Mapper注解的生效

    2024年02月11日
    浏览(31)
  • 简单明了的Git入门

    1、根据连接下载 git-scm.com 一路点击“下一步”,然后取消“view Release Notes” 安装成功后,鼠标右键点击第二个“Git” 配置用户名 git config --global user.name Mihu 配置邮箱(注意:这个电子邮箱并不需要真实的存在) git config --global user.email 9459@163.com  根据实际需要,有两种初始

    2024年02月11日
    浏览(30)
  • Sublime Text汉化,主打简单明了

    在Sublime中设置中文的步骤如下: 1.打开Sublime Text,使用快捷键Shift+Ctrl+P(MacOS下cmd+Shift+P),弹出查找栏。 2.在搜索框中输入\\\"install\\\",出现下拉选项,点击选择其中的\\\"Package Control: Install Package\\\"。 3.在搜索框中输入chinese,选择下拉框中的\\\"ChineseLocalizations\\\"。点击之后重启

    2024年02月10日
    浏览(31)
  • 简单明了实现Java地图小程序项目

    💂 个人主页:苏州程序大白 💂 个人社区:CSDN全国各地程序猿 🤟作者介绍:中国DBA联盟(ACDU)成员,CSDN全国各地程序猿(媛)聚集地管理员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年成立柒月软件工作室,2021年注册苏州凯捷智能科技

    2024年02月09日
    浏览(25)
  • Idea连接MySQL数据库教程 (简单明了)

    方法① 在url连接路径后面加上参数键值对:serverTimezone=GML即可 方法② 也可点击Advance找到serverTimezone,设置其为GML 解决方法: 右键数据库 → 鼠标悬停Database Tool → 选择Manage Shown Schemas → 点击All schemas即可显示表。 如果大家有其他的问题也可以在评论区留言,记得点赞收藏

    2024年02月11日
    浏览(44)
  • 简单明了证明多态虚表是位于常量区

    证实虚表存储与常量区

    2024年02月16日
    浏览(31)
  • Spring Boot集成WebSocket Demo,简单明了

    如果是初次搭建Spring Boot+WebSocket项目,不需要太复杂,只需要快速上手,那么你搜到的大部分文章可能都不适合你,我的这篇文章以最精简的方式搭建一个可以运行并通信的Spring Boot+WebSocket的Demo项目,有了根基之后再进行复杂化就不是难事了。 搭建Spring Boot项目都会吧,下面

    2024年02月09日
    浏览(32)
  • 升级php版本(简单明了,轻松升级php任意版本)

    1、查看当前php版本 2、查看当前所有php安装包 查看是否有你需要的版本,如果没有: 使用 Remi 存储库:Remi 存储库是一个第三方存储库,提供了广泛的 PHP 版本和扩展包。你可以按照以下步骤安装并启用 Remi 存储库: 3、查看是否升级

    2024年04月26日
    浏览(32)
  • Docker中,CMD 和 ENTRYPOINT 的区别,简单!明了!

    目录 CMD 和 ENTRYPOINT的区别:结论篇 CMD 和 ENTRYPOINT的其他细节结论 测试篇 一、 CMD的两种格式完全等效,但是ENTRYPOINT两种格式是有区别的 二、 docker run 命令替代了dockerfile的CMD命令 三、 docker run 命令在ENTRYPOINT的键值对格式下,是作为ENTRYPOINT命令的参数,docker run wx-centos ls -

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包