首页 > 数据库 >【简写Mybatis-02】注册机的实现以及SqlSession处理

【简写Mybatis-02】注册机的实现以及SqlSession处理

时间:2024-06-10 10:44:44浏览次数:15  
标签:02 java 注册机 SqlSession MapperRegistry import com xbhog

前言

注意:

学习源码一定一定不要太关注代码的编写,而是注意代码实现思想:

通过设问方式来体现代码中的思想;方法:5W+1H

源代码: https://gitee.com/xbhog/mybatis-xbhog https://github.com/xbhog/mybatis-xbhog ;交个朋友,有价值欢迎star。

回顾&分析

上一局实现Mapper接口和映射器通过代理类的方式进行链接。

上一局测试类:【简写MyBatis】01-简单映射器;虽然基本功能实现了,但是还不智能,可以发现该测试类中的映射器代理工厂只能实现单一的接口代理,SqlSession也需要规范化处理;将映射器代理和方法的调用类似服务进行包装。

 @Test
 public void test_MapperProxyFactory() {
     MapperProxyFactory<IUserDao> factory = new MapperProxyFactory<>(IUserDao.class);
 ​
     Map<String, String> sqlSession = new HashMap<>();
     sqlSession .put("com.xbhog.IUserDao.getUserName","模拟执行 Mapper.xml 中 SQL 语句的操作:查询用户姓名");
     IUserDao userDao = factory.newInstance(sqlSession);
 ​
     String res = userDao.queryUserName("10001");
     logger.info("测试结果:{}", res);
 }

目的

  1. 根据包路径实现接口的扫描和注册
  2. SqlSession规范化处理

实现

项目结构:

 └─src 
   ├─main 
   │ └─java 
   │   └─com 
   │     └─xbhog 
   │       ├─binding 
   │       │ ├─MapperProxy.java 
   │       │ ├─MapperProxyFactory.java 
   │       │ └─MapperRegistry.java 
   │       └─session 
   │         ├─DefaultSqlSession.java 
   │         ├─DefaultSqlSessionFactory.java 
   │         ├─SqlSession.java 
   │         └─SqlSessionFactory.java 
   └─test 
     └─java 
       └─com 
         └─xbhog 
           ├─AppTest.java 
           └─IUserDao.java 

项目类图

img

根据包路径实现接口的扫描和注册

可以通过自定义MapperRegistry这个类实现该功能,当然你也可以叫其他的名字(zhangsan、lisi

标签:02,java,注册机,SqlSession,MapperRegistry,import,com,xbhog
From: https://www.cnblogs.com/xbhog/p/18240463

相关文章

  • GK2024 游记
    License:CCBY-NC-SA4.0前情提要:拿到了高考体验卡。同级还有\(O(1)\)个和我一起来考的。目录Day0(2024.6.6)Day1语文Day499122178数学Day2物理Day499122179英语Day3化学Day499122180生物Day332748121Day0(2024.6.6)来到考点,熟悉了一下路线。然后就是各科老......
  • Kali Linux 2024.2 发布 (t64, GNOME 46 & Community Packages) - 领先的渗透测试发行
    KaliLinux2024.2发布(t64,GNOME46&CommunityPackages)-领先的渗透测试发行版ThemostadvancedPenetrationTestingDistribution请访问原文链接:https://sysin.org/blog/kali-linux/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgKaliLinux2024.2已......
  • SQL Server 2022 RTM 最新累积更新:Cumulative Update #13 for SQL Server 2022 RTM
    SQLServer2022RTM(最新累积更新)-基于Azure的持续性能和安全创新CumulativeUpdate#13forSQLServer2022RTM请访问原文链接:https://sysin.org/blog/sql-server-2022/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLServer2022现已普遍可用2022......
  • Prov-GigaPath:新型数字病理基础模型|顶刊精析·2024-06-10
    小罗碎碎念顶刊精析|2024-06-10首先祝各位老师、师兄师姐、师弟师妹们端午节快乐!!小罗是社恐,所以就不一一发消息问候了,哈哈。今天这篇推文是昨天下午写完的,想着时间有点晚了,所以就放到今天发了。这篇文献想必很多研究病理组学的老师已经看到了,朋友圈也看到了这篇文献相......
  • 2024 上海市居民小区的电动自行车使用共享充电服务的充电收费标准和依据 All In One
    2024上海市居民小区的电动自行车使用共享充电服务的充电收费标准和依据AllInOne电动自行车充电服务收费标准合法性、合理性按照实际的充电度数和电费价格收取电费,服务费应该单独收取每次充电收取的服务费的占比不能高于实际的消耗的电费价格运营商应该担当企业的社......
  • 2024-6-9 面试总结
    1.上来先拷打项目,关于项目是怎么实现的,以及判题模块代码的编译和进行等等.2.询问过使用什么软件了,完成了什么东西等等.3.演示了一下python模型实验,关于金融知识图谱.4.根据我项目前端用到的MarkDown编辑器,扩展给我们讲解了一下关于医院病历前端的编辑器5.讲解了X86ARM6......
  • Q21 LeetCode02.07 链表相交
    1.求出两链表长度2.分情况进行长链表头结点后移3.移至相同长度,两头结点一起后移,找到公共节点 1publicclassSolution{2publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){34ListNodecurA=headA;5ListNod......
  • init_array与got劫持——[zer0pts 2020]easy strcmp
    只是在顺思路,wp参考了2位大佬文章列表|NSSCTF[Zer0pts2020]easystrcmp分析与加法-CSDN博客题目Die 虚拟机运行一下 没有输入,直接报错退出了IDA 很奇怪啊,就是一个比较从我们运行直接报错来看,我们运行时a1>1这个条件是不成立的我的最初思路就是调试把a1改了或......
  • 2024-06-09 英语学习纪要
    remedyv.补救,纠正,改进Thissolutioniseasilyremedied.n.处理方法,改进措施/药品,疗法/(走法律程序的)救济aherbalremedyThereisnosimpleremedyforunemploymentinconvenience可以用作动词这种单词可太牛逼了,gpt4o又告诉了我另一些英语中确实有一些带有典型名......
  • 2024CCPC东北四省邀请赛VP
    ProblemJ.Breakfast直接根据题意模拟即可:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e6+10,mod=1e9+7;signedmain(){std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);doublex=32*0.6+20;printf("......