Mybatis入門案例中設計模式的簡單分析

Talk is cheap, show me the code!java

public class TestMybatis {
    public static void main(String[] args) throws IOException {

        //1. 讀取配置文件
        InputStream resource = Resources.getResourceAsStream("mybatis.xml");

        //2. 建立sqlSessionFactory工廠
        SqlSessionFactoryBuilder Builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = Builder.build(resource);

        //3. 使用工廠模式建立sqlSession對象
        SqlSession sqlSession = factory.openSession();

        //4. 使用sqlSession對象建立mapper(Dao接口)的代理對象
        ItemsMapper mapper = sqlSession.getMapper(ItemsMapper.class);

        //5. 使用代理對象執行方法
        List<Items> items = mapper.selectAll();
        for (Items item : items) {
            System.out.println(item);
        }
        
        //6. 釋放資源
        sqlSession.close();
        resource.close();
    }
}

以上這段mybatis的入門案例代碼,相信每個瞭解mybatis的朋友都能看得懂,知碼醬同窗今天也細細品了品!linux

  1. 項目的路徑問題 : Resources.getResourceAsStream("mybatis.xml");
    在實際的項目中,並不推薦衆所周知的相對路徑和絕對路徑。web

    • 相對路徑:src/main/java/xxx.xml web應用是須要部署到服務器上的,一旦部署,項目的路徑就會發生改變,而後。。。。一堆404;
    • 絕對路徑:F:/project/xxx/xxx.xml 要知道,服務器可不必定有咱們的F盤,何況推薦使用linux系統的服務器;
  2. 使用構建者模式建立SqlSessionFactory對象spring

    SqlSessionFactoryBuilder Builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = Builder.build(resource);
    • 什麼是構建者模式呢? 源碼暫且不作探究,個人理解就是點石成金的工程隊,想要黃金(factory),你得提供原材料(resource)吧,道理就這麼簡單!
    • ==優勢==:隱藏了建立對象的細節,只需調用相應方法就能獲得對象!
  3. 使用==工廠模式==建立SqlSession對象sql

    SqlSession sqlSession = factory.openSession();
    • 工廠模式的使用,使得咱們無需手動new一個對象,由於這樣不利於維護(一旦改變需求就要改源代碼,又得從新編譯部署!)
    • ==優勢==:解耦(下降了類和類之間的依賴關係)
  4. 使用==代理模式==建立了mapper(Dao)接口的實現類
    java ItemsMapper mapper = sqlSession.getMapper(ItemsMapper.class);設計模式

    • 代理模式就比如租房的中介,房東只需提供房源,關於租房的事情交給中介(代理),其餘什麼都不用管,作本身的事情就行。也就是說使用代理模式,以前的代碼徹底不須要改變,也不須要咱們建立實現類,代理會幫咱們完成這件事情!
    • ==優勢==:不修改源碼的基礎上對已有方法加強!
  5. 總結:這篇文章的出發點是淺顯易懂的理解mybatis入門案例中的設計模式和使用路徑時應該注意的問題,雖而後續學習spring的時候,這些內容也會被隱藏,但目的是爲了理解mybatis設計的獨具匠心,關於設計模式的深層次理解,還須要咱們多讀一寫其餘的相關文章,多推敲設計模式的代碼!服務器

相關文章
相關標籤/搜索