日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手写实现乞丐版mybatis

發(fā)布時間:2023/12/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手写实现乞丐版mybatis 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考我們閱讀源碼畫的uml圖,來實現(xiàn)我們自己的mybatis(造個輪子)

閱讀源碼參考:mybatis查詢過程的源碼分析

組織結(jié)構(gòu)

1. Configuration類我們直接用EmployeeMapperXml來代替

2. MySqlSession

3. Interface MyExecutor

4. Class MySimpleExecutor

5. Class MyMapperProxy

6. Interface EmployeeMapper

7. 啟動類BootStrap

BootStrap

與我們mybatis的業(yè)務(wù)代碼一致

MySqlSession sqlSession = new MySqlSession();EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);Employee employee = mapper.getEmployeeById(1);System.out.println(employee);

其是如何做的呢?

?

MysqlSession

在MySqlSession中,持有MyExecutor

提供了getMapper方法,返回代理對象

提供了selectOne方法,通過executor執(zhí)行query方法

?

MyMapperProxy

getMapper實際上返回的是一個動態(tài)代理對象,與mybatis一樣,EmployeeMapper interface并沒有實現(xiàn)類,而是在其動態(tài)代理方法中執(zhí)行其實現(xiàn)方法,在這里就是從configuration中取出sql及參數(shù)并執(zhí)行

?

執(zhí)行sql就要使用executor了

?

MySimpleExecutor? MyExecutor

這里使用了硬編碼的方式,進(jìn)行數(shù)據(jù)結(jié)果的解析。而mybatis中用resultMap來執(zhí)行結(jié)果映射模板。

?

總結(jié):

通過自己寫一個乞丐版的mybatis(造輪子),那么就會避免之前只是知道這么用,但是不知道為什么這么用的問題。

源代碼:

https://gitee.com/constfafa/mybatis_demo.git

總結(jié)

以上是生活随笔為你收集整理的手写实现乞丐版mybatis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。