Mybatis8:Mybatis與Spring的整合
整合思路:
需要spring通過單例方式管理SqlSessionFactory。
spring和mybatis整合生成代理對象,使用SqlSessionFactory創建SqlSession。(spring和mybatis整合自動完成)
持久層的mapper都需要由spring進行管理。
導入ssm框架相關jar包
SqlSessionFactory配置
在applicationContext.xml配置sqlSessionFactory和數據源
sqlSessionFactory在mybatis和spring的整合包下。
<!-- 載入配置文件 --><context:property-placeholder location="classpath:db.properties" /><!-- 數據源,使用dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- sqlSessinFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 載入mybatis的配置文件 --><property name="configLocation" value="mybatis/SqlMapConfig.xml" /><!-- 數據源 --><property name="dataSource" ref="dataSource" /></bean>
---------------------------------------------------------------------------------------------------------------------------
原始dao開發(和spring整合後)
前面步驟沒有變化
在SqlMapconfig.xml中載入User.xml
創建介面
dao介面實現類需要注入SqlSessoinFactory,通過spring進行注入。
這裡spring聲明配置方式,配置dao的bean:
讓UserDaoImpl實現類繼承SqlSessionDaoSupport
(繼承SqlSessionDaoSupport就可以直接調用this.getSqlSession()方法,而不需要在類中定義變數SqlSessionFactory 然後通過spring注入,然後再通過sqlSessionFactory.openSession()方法獲取sqlSession)
配置dao,class="cn.itcast.ssm.dao.UserDaoImpl"
在applicationContext.xml中配置dao。
測試代碼:
---------------------------------------------------------------------------------------------------------------------------
mapper代理開發
1.創建mapper.xml和mapper.java
2.通過MapperFactoryBean創建代理對象
此方法問題:
需要針對每個mapper進行配置,麻煩。
3. 通過MapperScannerConfigurer進行mapper掃描(建議使用)
4.測試代碼:
推薦閱讀:
※如何在mybatis中調試查看生成的sql語句?
※Mybatis5:resultMap與resultType總結
※Mybatis1:基礎
※Mybatis9:Mybatis與Hibernate區別
TAG:MyBatis |