javascript
spring boot mybatis 整合_MyBatis学习:MyBatis和Spring整合
1. 整合的工程結構
首先我們來看下整合之后的工程結構是什么樣的。
2. 配置文件
在于spring整合之前,mybatis都是自己管理數據源的,然后sqlSessionFactory是我們自己去注入的,現在整合了,這些都要交給spring來管理了,來看一下beans.xml文件中的配置:
跟spring和hibernate整合的情況差不多,都是通過properties文件加載數據庫連接信息,然后導入配置文件配置一下sessionFactory,下面看看db.properties和SqlMapConfig.xml文件。
3. dao方式開發的配置
在最開始我們提到,mybatis中有兩種開發方式,一種dao開發方式,一種mapper開發方式,后者用的比較多,但是不排除沒有使用dao方式的,所以兩種我都總結一下,首先看dao方式開發的配置。
1)配置User.xml
在sqlMap包中有個User.xml,里面是針對用戶的操作的一些配置,這里是整合,所以我就寫了一個statement,如下:
只是通過id查詢用戶,如果測試成功,說明整合成功,這里寫完了后,別忘了在SqlMapConfig.xml中加載這個映射文件,但是上面已經加載過了,即。
2)開發dao及其實現類
接下來就是開發dao及其實現類了,就一個方法,通過id查詢用戶,先來看下dao的方法:
再看下實現類:
這里是重點:通過dao方式開發的話,dao的實現類在實現接口的同時,需要繼承SqlSessionDaoSupport類,這個類中有獲取SqlSession的方法,因為sqlSessionFactory已經在beans.xml文件中配置好了(下面有寫),spring會自動注入進去,繼承了SqlSessionDaoSupport類就可以直接通過getSqlSession()方法來獲取sqlSession。然后就可以操作數據庫了。
3)配置dao
上面也說了,要獲取sqlSession必須得有sqlSessionFactory才行啊,這就需要spring來注入了,所以我們在beans.xml中配置一下該dao:
這樣的話,dao開發方式就整合好了,下面來測試一下。
4. mapper方式開發的配置
mapper方法開發的話,mapper.xml和mapper.java文件要放在一個包下,這里主要放在ssm.mapper的包下了,下面看一下兩個文件:
1)UserMapper.xml和UserMapper.java
這個和之前的都一樣,沒什么難度,注意xml中的namespace要寫成對應的java文件的完全限定名即可。
2)配置beans.xml
上面已經配置好了mapper的映射和接口了,那么如何由spring來產生一個代理對象呢?spring是通過MapperFactoryBean來創建代理對象的,看下面的配置:
從配置中可以看出,使用MapperFactoryBean來產生mapper的代理對象,首先要配置一個mapperInterface,即你要spring產生哪個mapper接口對應的代理對象,所以肯定要把我們剛剛寫好的mapper接口的完全限定名給傳進去,spring就知道要創建對應的代理對象了。當然,sqlSessionFactory是必不可少的,否則怎么產生sqlSession呢?
但是問題來了,如果有很多個mapper接口咋整?那beans.xml中難道要寫很多個這樣的bean么?答案肯定不是這樣,我們可以在beans.xml中通過掃描包即可,即告訴spring,你把指定的包中所有的mapper接口都給我生成一個代理對象出來,如下:
從上面的配置中可以看出,spring使用MapperScannerConfiger來進行mapper掃描的。要想掃描成功,必須遵循之前說的規范:即mapper.xml和mapper.java兩個文件名必須保持一致,且在同一個目錄下。這樣的話,自動掃描出來的mapper的bean的id就為mapper類名的首字母小寫。所以上面的bean沒有id屬性,因為這個是根據具體的mapper接口來的。basePackage是用來指定要掃描的包。這樣就可以批量掃描mapper接口了。
到這里,spring和mybatis就整合好了。
學習相關推薦(編程必備輔助):
①:搜索關注公眾號“只會寫BUG”,分享更多干貨知識,資訊,教程等
②:海量編程類資料零基礎到高級亟待領取!!!
如果覺得對你有一丟丟幫助,麻煩動動你的小手指【關注】一下上面的公眾號吧,或者【轉發】讓更多人看到該文章。大家也可積極后臺給我留言,多多交流,共同進步。
總結
以上是生活随笔為你收集整理的spring boot mybatis 整合_MyBatis学习:MyBatis和Spring整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 压测过程中,CPU和内存占用率很高,案例
- 下一篇: python中缩进_python编程中的