Spring框架入門必備教程-Spring集成MyBatis

Spring?集成 MyBatis
將 MyBatis 與 Spring 進(jìn)行整合,主要解決的問題就是將SqlSessionFactory 對(duì)象交由 Spring 來管理。所以,該整合,只需要將SqlSessionFactory 的對(duì)象生成器 SqlSessionFactoryBean 注冊(cè)在 Spring 容器中,再將其注入給Dao 的實(shí)現(xiàn)類即可完成整合。
實(shí)現(xiàn) Spring 與MyBatis 的整合常用的方式:掃描的Mapper 動(dòng)態(tài)代理Spring 像插線板一樣,mybatis 框架是插頭,可以容易的組合到一起。插線板spring 插上mybatis,兩個(gè)框架就是一個(gè)整體。
MySQL?創(chuàng)建數(shù)據(jù)庫 springdb,新建表 Student

maven?依賴 pom.xml

插件:

定義實(shí)體類 Student

定義StudentDao?接口

定義映射文件mapper
在Dao?接口的包中創(chuàng)建 MyBatis?的映射文件 mapper,命名與接口名相同,本例為StudentDao.xml。mapper?中的 namespace?取值也為Dao?接口的全限定性名。

定義Service?接口和實(shí)現(xiàn)類
接口定義:

實(shí)現(xiàn)類定義:

定義MyBatis?主配置文件
?在src?下定義 MyBatis?的主配置文件,命名為 mybatis.xml。這里有兩點(diǎn)需要注意:
(1)?主配置文件中不再需要數(shù)據(jù)源的配置了。因?yàn)閿?shù)據(jù)源要交給 Spring?容器來管理了。
(2)?這里對(duì)mapper?映射文件的注冊(cè),使用<package/>標(biāo)簽,即只需給出mapper 映射文件所在的包即可。因?yàn)閙apper?的名稱與Dao?接口名相同, 可以使用這種簡單注冊(cè)方式。這種方式的好處是,若有多個(gè)映射文件,這里的配置也是不用改變的。當(dāng)然,也可使用原來的<resource/>標(biāo)簽方式。

修改Spring?配置文件
(1)?數(shù)據(jù)源的配置(掌握)
?使用JDBC 模板,首先需要配置好數(shù)據(jù)源,數(shù)據(jù)源直接以 Bean 的形式配置在 Spring 配置文件中。根據(jù)數(shù)據(jù)源的不同,其配置方式不同:
Druid 數(shù)據(jù)源DruidDataSource
Druid 是阿里的開源數(shù)據(jù)庫連接池。是Java 語言中最好的數(shù)據(jù)庫連接池。Druid 能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。Druid 與其他數(shù)據(jù)庫連接池的最大區(qū)別是提供數(shù)據(jù)庫的
?官網(wǎng):https://github.com/alibaba/druid
使用地址:https://github.com/alibaba/druid/wiki/常見問題
配置連接池:

Spring 配置文件:

(2)?從屬性文件讀取數(shù)據(jù)庫連接信息
為了便于維護(hù),可以將數(shù)據(jù)庫連接信息寫入到屬性文件中,使 Spring 配置文件從中讀取數(shù)據(jù)。
屬性文件名稱自定義,但一般都是放在src 下。

Spring 配置文件從屬性文件中讀取數(shù)據(jù)時(shí),需要在<property/>的value 屬性中使用${ },將在屬性文件中定義的key 括起來,以引用指定屬性的值。

該屬性文件若要被 Spring 配置文件讀取,其必須在配置文件中進(jìn)行注冊(cè)。使用<context>標(biāo)簽。
<context:property-placeholder/>方式(掌握)
該方式要求在 Spring 配置文件頭部加入spring-context.xsd 約束文件
<context:property-placeholder/>標(biāo)簽中有一個(gè)屬性 location,用于指定屬性文件的位置。

(3)?注冊(cè) SqlSessionFactoryBean

(4)?定義 Mapper?掃描配置器 MapperScannerConfigurer
?Mapper?掃描配置器 MapperScannerConfigurer 會(huì)自動(dòng)生成指定的基本包中mapper?的代理對(duì)象。該 Bean?無需設(shè)置 id?屬性。basePackage?使用分號(hào)或逗號(hào)設(shè)置多個(gè)包。

向 Service?注入接口名
?向 Service?注入 Mapper?代理對(duì)象時(shí)需要注意,由于通過 Mapper?掃描配置器 MapperScannerConfigurer?生成的 Mapper?代理對(duì)象沒有名稱,所以在向 Service 注入 Mapper 代理時(shí),無法通過名稱注入。但可通過接口的簡單類名注入,因?yàn)樯傻氖沁@個(gè)Dao 接口的對(duì)象。

Spring?配置文件全部配置

最后奉上視頻教程??,視頻觀看效果更佳??!走過路過別忘素質(zhì)三連哦~~

