首頁 > 軟體

Spring整合Mybatis思路梳理總結

2022-02-12 19:00:44

Spring整合Myabtis思路的分析

引入相關依賴

Spring

Myabtis

mysql

Mybatsi-spring

如何整合?

Spring:

專案管理框架,主要是用來負責專案中元件物件的建立,使用,銷燬。

Mybatis:

持久層框架,主要是用來簡化原始jdbc技術對資料庫存取操作。

== >整合思路:通過Spring框架接管Mybatis框架中核心物件的建立。

Mybatis框架中核心物件是誰?

  • sqlSession?
  • SqlSessionFactory?
  • SqlSessionFactoryBuilder?
  • dao?

最核心的物件必然是:SqlSessionFactory。

SqlSessionFactoryBuilder的作用就是讀取解析組態檔==【資料來源設定,mapper檔案設定】==,來建立SqlSessionFactory。

SqlSession的建立又依靠於SqlSessionFactory。

== > SqlSessionFactory是最核心的物件。

SM整合

整合思路:通過Spring框架接管Mybatis中核心的SqlSessionFactory物件的建立。

SqlSessionFactory是簡單物件還是複雜物件呢?

如果是簡單物件

<bean id="" class=""/>

如果是複雜物件

通過檢視原始碼得知,SqlSessionFactory是一個介面型別的複雜物件。

如何建立?

is = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder(),build(is);
1).SqlSessionFactory(Factory)Bean implements FactoryBean<SqlSessionFactory> {
  	SqlSessionFactory getObject() {
        is = Resources.getResourceAsStream("mybatis-config.xml");
		sqlSessionFactory = new SqlSessionFactoryBuilder(),build(is);
    }	  
    Class getClass() {
        return SqlSessionFactory.class;
    }
    boolean isSingleton() {
        return true;
    }
 }
2).工廠管理SqlSessionFactory
<bean id="sqlSessionFactory" class="xxx.SqlSessionFactoryBean">
3).工廠獲取
SqlSessionFactory sf = context.getBean("sqlSessionFactory");

寫完之後,我們可以發現,這段程式碼是固定不變的,這個專案要寫,別的專案也要寫。

於是Mybatis官方替我們寫好了,對這段程式碼進行了封裝:Mybatis-spring.jar。

jar包裡提供了一個類:SqlSessionFactoryBean。

我們以後只要引Mybatsi-spring依賴就可以了,不用在自己去寫了。

值得注意的是:mybatis官方提供SqlSessionFactoryBean,不在使用mybaits主組態檔。

主組態檔的核心就是【資料來源】【mapper檔案的註冊】

所以我們要注入資料來源物件,引入druid依賴,注入mapper檔案的位置。【DI思想,依賴注入】

<!-- 設定Spring.xml檔案 -->

<!-- 建立資料來源物件 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
	<property name="driverName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/xxx"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
<bean/>

<!-- 建立SqlSessionFactory物件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注入資料來源物件 -->
    <property name="dataSource" ref="dataSource" />
    <!-- 注入mapper檔案的位置 -->
    <property name="mapperLocations">
        <array>
            <value>.....</value>
        </array>
    </property>
<bean/>

到此這篇關於Spring整合Mybatis思路梳理總結的文章就介紹到這了,更多相關Spring整合Mybatis內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com