手写实现乞丐版mybatis
參考我們閱讀源碼畫的uml圖,來實現我們自己的mybatis(造個輪子)
閱讀源碼參考:mybatis查詢過程的源碼分析
組織結構
1. Configuration類我們直接用EmployeeMapperXml來代替
2. MySqlSession
3. Interface MyExecutor
4. Class MySimpleExecutor
5. Class MyMapperProxy
6. Interface EmployeeMapper
7. 啟動類BootStrap
BootStrap
與我們mybatis的業務代碼一致
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執行query方法
?
MyMapperProxy
getMapper實際上返回的是一個動態代理對象,與mybatis一樣,EmployeeMapper interface并沒有實現類,而是在其動態代理方法中執行其實現方法,在這里就是從configuration中取出sql及參數并執行
?
執行sql就要使用executor了
?
MySimpleExecutor? MyExecutor
這里使用了硬編碼的方式,進行數據結果的解析。而mybatis中用resultMap來執行結果映射模板。
?
總結:
通過自己寫一個乞丐版的mybatis(造輪子),那么就會避免之前只是知道這么用,但是不知道為什么這么用的問題。
源代碼:
https://gitee.com/constfafa/mybatis_demo.git
總結
以上是生活随笔為你收集整理的手写实现乞丐版mybatis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Notification基本通知的两种写
- 下一篇: 僵尸网络“Mykings”