兩張圖徹底搞懂MyBatis的Mapper原理

提到看源碼,很多同學內心的恐懼的,其實這個從人性的角度來說是非常正常的,因爲人們對未知的事物,都是非常恐懼的,其次,你內心可能始終覺得,好像不會原理也還是能工作啊,你的潛意識裏沒有強烈的慾望.從閱讀源碼的經歷來說,Java三大框架SSM中,Mybatis的源碼是最適合入門的.

簡單使用

這是一個簡單的Mybatis保存對象的例子

 1@Test
 2publicvoidtestSave()throwsException{
 3//創建sessionFactory對象
 4SqlSessionFactorysf=newSqlSessionFactoryBuilder().
 5build(Resources.getResourceAsStream("mybatis-config.xml"));
 6//獲取session對象
 7SqlSessionsession=sf.openSession();
 8//創建實體對象
 9Useruser=newUser();
10user.setUsername("toby");
11user.setPassword("123");
12user.setAge(23);
13//保存數據到數據庫中
14session.insert("com.toby.mybatis.domain.UserMapper.add",user);
15//提交事務,這個是必須要的,否則即使sql發了也保存不到數據庫中
16session.commit();
17//關閉資源
18session.close();
19}
1<mappernamespace="com.toby.mybatis.domain.UserMapper">
2<!--#{}在傳入的對象中找對應的屬性值-->
3<!--parameterType傳入的參數是什麼類型-->
4<insertid="add"parameterType="com.toby.mybatis.domain.User">
5INSERTINTOUSER(username,password,age)VALUES(#{username},#{password},#{age})
6</insert>
7</mapper>

引出主題

但是在實際中,我們都不是這樣操作的,我們是通過Mapper接口,調用接口方法,就能實現CRUD操作,那麼關鍵是,這個接口究竟做了什麼事,纔是我們關心的.

只要把下面這段代碼究竟發生了什麼事弄明白,就明白,這個Mapper接口究竟做了什麼事.

1publicvoidtestGetObject()throwsException{
2SqlSessionsession=MybatisUtil.openSession();
3
4UserMappermapper=session.getMapper(UserMapper.class);
5Useruser=mapper.get(5L);
6
7System.out.println(user);
8session.close();
9}

1publicinterfaceUserMapper{
2
3publicvoidadd(Useruser);
4publicUserget(Longid);
5}

流程圖

但是我認爲,一張流程圖和時序圖就看明白這期間所發生的事

兩張圖徹底搞懂MyBatis的Mapper原理

 

兩張圖徹底搞懂MyBatis的Mapper原理

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章