javascript
MyBatis3.x和Spring3.x的整合
MyBatis3.x和Spring3.x的整合
2017/10/021.mybatis和spring整合的思路
1.讓spring管理SqlSessionFactory
2.讓spring管理mapper對象和dao
使用spring和mybatis整合開發mapper代理及原始dao接口。
自動開啟事務,自動管理sqlsession
3.讓spring管理數據源(即數據庫連接池)
2.準備工作
2.1創建整合工程
新建項目,拷貝前一天所建mybatis的項目,現在的項目結構為:
2.2.導入jar包
1.mybatis3.x本身的jar包
2.數據庫驅動包
3.spring3.xjar包
4.spring和mybatis的整合包:從mybatis官方下載mybatis-spring-1.2.2.jar
2.3.SqlMapConfig.xml
mybatis的配置文件:設置別名、mappers。如下
mybatis和spring整合后,mybatis配置文件中的<mappers>標簽便可以去掉,因為我們在spring配置文件中進行對mapper的配置;別名配置標簽<typeAliases>也可以去掉,因為我們也可以在spring配置文件中對pojo全限定性類名的別名進行配置。
2.4.applicationContext.xml
spring配置文件中需要配置的內容有:1.數據源(用的是dbcp連接池,數據庫的連接配置寫在src路徑下的db.properties文件中)。2.SqlSessionFactory。3.mapper或dao。如下:
到此處,我們便完成了mybatis與spring的整合,接下來便可以進行測試了。從整合后的mybatis配置文件和spring的配置文件來來,整合后的mybatis配置文件中的內容基本都被移到了spring的配置文件中。
3.整合開發原始dao接口
3.1配置SqlSessionFactory
在applicationContext.xml中配置SqlSessionFactory,為上圖的:
3.2開發原始dao
將dao接口的實現類UserDaoImpl.java繼承SqlSessionDaoSupport.java,該父類中有屬性的set方法并已經聲明SqlSessionFactory對象,所以我們在UserDaoImpl.java中只需要寫如下代碼:
然后需要在spring配置文件中配置dao:
測試:
控制臺中成功打印出結果:
4.整合開發mapper代理方法
首先在mapper包下創建UserMapper.java和UserMapper.xml文件,利用mybatis和spring整合開發mapper的方式有兩種。
4.1使用MapperFactoryBean
該類是整合jar包下的一個類,它的內部已經繼承SqlSessionDaoSupport類,首先我們需要在spring配置文件中進行Mapper對象的配置:
然后便可以進行測試:
這樣就完成了對mapper的開發,使用這種方式的缺點就是對于項目中的每個mapper我們都需要配置上述內容,比較繁瑣。接下來看看下面這種開發mapper代理的方式。
4.2使用MapperScannerConfigurer(掃描mapper)
該類同樣是整合jar包中的一個類。在spring配置文件中加入如下配置:
然后進行測試:
同樣正常運行。
使用這種方式的優點:使用掃描器自動掃描mapper,生成代理對象比較方便。
5.出現異常總結
使用MapperFactoryBean的方式不會報錯,但是使用這樣掃描包的方式,上述代碼我完全是照搬的教程代碼,可是運行時會出現org.springframework.beans.factory.BeanDefinitionStoreException的報錯。
出現這個異常的原因你不用多想,絕對是因為你的spring 版本與開發工具的jdk版本不兼容!之前在單獨開發spring框架中使用到<content:component-scan base-package="包名"注解掃描聲明整個pojo包下的類時也出現了這個錯誤,那時候我將spring3.x.jar包換成spring4.x.jar包后成功解決,因為我的開發工具IDEA默認jdk版本是1.8,所以我要升級jar包版本才能實現兼容。
整合spring和mybatis時又出現了這個錯誤!所以這里我決定像之前那樣將spring3.x換成sring4.x,可是我已經導入的jar包太多太多實在分不清了,經過很多的輪回換jar包后又出現了更多的異常。我為這個異常真是頭疼了幾天幾夜,經過幾天的不斷研究找資料才發現原因是因為我用的spring 3.x的jar包,與IDEA的jdk1.8不兼容,解決方法有兩種:
- 1.將jdk版本調為1.7,我用的開發工具為IDEA,它默認下的JDK使用1.8版本,所以我需要在三個地方將jdk的版本改過來(前提是你已經下載了jdk1.7版本),修改IDEA配置中Project的jdk版本、Modules的jdk版本、SDKs的版本,如果你用到leTomcat還需要修改Tomcat配置的jdk版本。這樣jdk1.7與spring3.x才兼容。
- 2.將spring3.x.jar換成spring4.x.jar包。這種方式比較繁瑣,建議大家使用第一種方式。spring4.x與jdk1.8才兼容。
寫到這里,我們便成功的完成了spring3.x與mybatis3.x的整合。整合完后我們便可以從mybatis的配置文件中刪掉對mapper的配置了,因為我們已經在spring配置文件中用mapper掃描器對mapper進行了配置。
總結
以上是生活随笔為你收集整理的MyBatis3.x和Spring3.x的整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样才算得上合格的程序员
- 下一篇: Springboot 集成 Swagge