【肥朝】圖解源碼 | MyBatis的Mapper原理

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

簡單使用

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

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

引出主題

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

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

public void testGetObject() throws Exception {
    SqlSession session = MybatisUtil.openSession();

    UserMapper mapper = session.getMapper(UserMapper.class);
    User user = mapper.get(5L);

    System.out.println(user);
    session.close();
}
複製代碼
public interface UserMapper {

    public void add(User user);
    public User get(Long id);
}
複製代碼

流程圖

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

寫在最後

肥朝 是一個專一於 原理、源碼、開發技巧的技術公衆號,號內原創專題式源碼解析、真實場景源碼原理實戰(重點)。掃描下面二維碼關注肥朝,讓本該造火箭的你,再也不擰螺絲!app

相關文章
相關標籤/搜索