??該學(xué)習(xí)筆記是《尚學(xué)堂spring視頻教程》的學(xué)習(xí)筆記第四部分。
17、Spring整合MyBatis
1、步驟:導(dǎo)入相關(guān)jar包、編寫配置文件、實(shí)現(xiàn)。
在UserDaoImpl.java中:

??現(xiàn)在Spring完成了sqlSession創(chuàng)建,無需自己創(chuàng)建。
沒有整合的時(shí)候,需要將dataSource配置在mybatis-config.xml中。在bean.xml中配置數(shù)據(jù)源dataSource、sqlSessionFactory。
??如果需要進(jìn)行注入,那么UserDaoImpl需要提供set方法或者構(gòu)造函數(shù)。

??其中,
sqlSessionFactory引用了datasource。??配置文件中,UserDao并非直接引用sqlSessionFactory,而是先引用sqlSessionTemplate。而sqlSessionTemplate還需要通過
<constructor-arg>標(biāo)簽來和sqlSessionFactory建立聯(lián)系。雖然看起來很復(fù)雜,但是現(xiàn)在只需要寫一次。

??在測(cè)試類中現(xiàn)在通過上述方法已經(jīng)可以獲取到userDao對(duì)象。在user.mapper.xml文件中:

在userDao文件中:

??現(xiàn)在通過Spring而非MyBatis來創(chuàng)建數(shù)據(jù)庫連接(也就是創(chuàng)建dataSource對(duì)象)。
18、聲明式事務(wù)管理
??假如mapper.xml文件如下,并且delete方法中SQL語句出現(xiàn)錯(cuò)誤。

UserDaoImple文件如下。

測(cè)試類如下:

??這里成功添加,但是刪除失敗。不符合事務(wù)管理。要進(jìn)行事務(wù)管理,在Spring中首先需要導(dǎo)入:
xmlns:tx="http://www.springframework.org/schema/tx"
??然后需要配置事務(wù)管理器以及事務(wù)通知。

??還需要配置aop:
<aop:config>
<aop:pointcut expression="execution(* cn.sxt.service.dao.impl.*.*(..))" id="pointcut"/>
<aop:adviser advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
??這樣子事務(wù)就交給Spring進(jìn)行管理了。