兩張圖完全搞懂MyBatis的Mapper原理!

做者:肥朝

簡單使用sql

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

1@Test
2public void testSave() throws Exception {
3    //建立sessionFactory對象
4    SqlSessionFactory sf = new SqlSessionFactoryBuilder().
5            build(Resources.getResourceAsStream("mybatis-config.xml"));
6    //獲取session對象
7    SqlSession session = sf.openSession();
8    //建立實體對象
9    User user = new User();
10    user.setUsername("toby");
11    user.setPassword("123");
12    user.setAge(23);
13    //保存數據到數據庫中
14    session.insert("com.toby.mybatis.domain.UserMapper.add", user);
15    //提交事務,這個是必需要的,不然即便sql發了也保存不到數據庫中
16    session.commit();
17    //關閉資源
18    session.close();
19}
1<mapper namespace="com.toby.mybatis.domain.UserMapper">
2    <!--#{}在傳入的對象中找對應的屬性值-->
3    <!--parameterType傳入的參數是什麼類型-->
4    <insert id="add" parameterType="com.toby.mybatis.domain.User">
5        INSERT INTO USER (username,password,age) VALUES (#{username},#{password},#{age})
6    </insert>
7</mapper>

引出主題session

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

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

1public void testGetObject() throws Exception {
2    SqlSession session = MybatisUtil.openSession();
3
4    UserMapper mapper = session.getMapper(UserMapper.class);
5    User user = mapper.get(5L);
6
7    System.out.println(user);
8    session.close();
9}
1public interface UserMapper {
2
3    public void add(User user);
4    public User get(Long id);
5}

 

流程圖app

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

 

 

免費Java資料領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高併發分佈式、大數據、機器學習等技術。機器學習

傳送門:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q分佈式

相關文章
相關標籤/搜索