日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

MyBatis3.x和Spring3.x的整合

發布時間:2024/8/23 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis3.x和Spring3.x的整合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MyBatis3.x和Spring3.x的整合

2017/10/02

1.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的整合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。