大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Springboot配置Mybatis的事務管理

Springboot配置Mybatis的事務管理

更新時間:2021-06-23 16:19:11 來源:動力節點 瀏覽1882次

spring boot配置mybatis和事務管理

1.spring boot與mybatis的配置

(1)首先,spring boot配置mybatis需要的全部依賴如下:

<!-- Spring Boot 啟動父依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<!--以上內容放在dependencies標簽外,如果你有已經有父標簽,那將以上部分粘貼到父項目中-->
<!-- spring boot 項目啟動必須引入的web依賴,以下內容放在dependency即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.1.RELEASE</version>
</dependency>       
 <!-- Spring Boot Mybatis 依賴 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.2.0</version>
</dependency>
 <!-- oracle的數據庫驅動包 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4.0-atlassian-hosted</version>
</dependency>

這里主要說一下上邊的數據庫驅動包,oracle和mysql引入不同的依賴,千萬不要忘記。如果忘記引入,會報找不到驅動類異常。

(2)然后,在application.properties配置文件里添加如下內容:

##數據庫連接信息
spring.datasource.url=jdbc:oracle:thin:@//192.168.1.171:1521/orcl
spring.datasource.username=znxd
spring.datasource.password=znxd
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
##指向mapper的xml文件位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
##指向實體類的位置
mybatis.type-aliases-package=cloud.user.models.*

上邊以spring.datasource開頭的內容其實有很多,具體,在application.properties文件里輸入后看看能點出的內容就知道了。

springboot默認會把spring.datasource開頭的信息收納,進行DataSource對象的配置,進而進行sqlSessionFactory的配置等相關數據庫連接的配置,所以其他很多人會說寫什么配置類,那些我感覺沒有必要的。(配置druid需要配一個 Bean,下一篇會說到)

當然如果是特別詳細的,而在application.properties文件里又通過spring.datasource點不出相關的配置,那可能需要配置類什么的。

mybatis.mapper-locations所指向的位置是從src/main/resource開始的,前邊需要加上classpath,它指向的是你的mapper.xml文件放置的位置。

(3)我是mybatis通過數據庫表逆向工程生成的實體類、mapper等,先把項目具體的放置結構貼出來如下:

springboot配置mybatis

對于上圖的解釋如下:

啟動類必須放在項目中相對其他類的最高處,前邊文章說過,spring boot沒有傳統的spring項目配置的&lt;bean&gt;標簽,它掃描bean的方式就是從啟動類依次向下掃描進默認的內置tomcat容器的。

上圖service放置的位置比其實現類放置的位置高,如果有兩個service A和B,實現類里有Aimpl和Bimpl,如果有Aimpl調用B的情況,有可能會在啟動容器報“a field named‘B’not found”貌似這種錯誤,說明容器掃描順序有誤。

這種情況的最好的解決辦法,就應該像我將service放在高處,容器啟動先掃描進service,然后再掃描impl,這樣在實現類掃描的時候就肯定能找到service,也就不會出現這種錯誤了。

另一種解決辦法是在引入service時多添加一個注解: Lazy

 Autowired

 Lazy//這樣就會延遲加載,上圖不需要,這里只是解釋這注解

LogsUserActiveMapper logsUserActiveMapper;

總之,如果出現調用與被調用關系,一定要記得,被調用者要首先被掃描進spring boot內置容器,也就是被調用者的包位置要放的較高一些(位置至少也待相平)。

(4)service實現類上需要加一個 Service注解。這個可能不需要,我一直沒有試試。

(5)spring boot+mybatis除了這些要求,還需要在啟動類處添加一個注解 MapperScan,如下:

package cloud.kafka;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication
@EnableTransactionManagement //如果mybatis中service實現類中加入事務注解,需要此處添加該注解
@MapperScan("cloud.kafka.mapper")  //掃描的是mapper.xml中namespace指向值的包位置
public class KafkaLogApplication {
    public static void main(String[] args){
        SpringApplication.run(KafkaLogApplication.class, args);
    }
}
如下是我的mapper.xml里namespace的值

**這樣就完成mybatis的配置了。

2.事務的配置,就是在mybatis的基礎上加上兩個注解。

(1)需要的注解為 EnableTransactionManagement和 Transactional兩個,它們來自于下邊這個包:

spring-tx.jar

該包其實在前邊配置mybatis引入依賴時,已自動引入,就是下邊這個:

 <!-- Spring Boot Mybatis 依賴 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>

所以只要上邊的依賴引入進來,那事務就不需要再引入包了,

(2)首先,找到你的service實現類,加上 Transactional注解,如果你加在類上,那該類所有的方法都會被事務管理,如果你加在方法上,那僅僅該方法符合具體的事務。當然我們一般都是加在方法上。因為只有增、刪、改才會需要事務。

比如下邊的一個插入數據的方法添加事務:

@Override
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
public Integer add(Cbf_jtcy t) {
    return cbf_jtcyMapper.insert(t);
}

如果不知道里邊都是什么東西,可以查看這篇文章,spring,mybatis事務管理配置與 Transactional注解使用

(3)配置完后,spring boot啟動類必須要開啟事務,而開啟事務用的注解就是 EnableTransactionManagement,如下:

@SpringBootApplication
@EnableTransactionManagement 
@MapperScan("microservice.qssj.mapper")//必須加這個,不加報錯,如果不加,也可以在每個mapper上添加@Mapper注釋,并且這里還要多填一個注釋,那個我忘了,我一直用這個注解
public class QssjServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(QssjServiceApplication.class, args);
    }
}

這樣就完成了事務的配置。

以上就是動力節點小編介紹的"Springboot配置Mybatis的事務管理",希望對大家有幫助,想了解更多可查看springboot教程技術文檔,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 99精品国产高清自在线看超 | 97超精品视频在线观看 | 欧美亚洲h在线一区二区 | 日韩 欧美 国产 亚洲 中文 | 日韩一区在线视频 | 久青草视频免费视频播放线路1 | 久久高清免费视频 | 日本又黄又爽又色的视频免费 | 国四虎影永久 | 欧美日本一区二区 | 99热久久精品国产 | 一及毛片 | 毛色毛片免费观看 | 西西做人爱免费视频 | 青青青爽在线视频观看大全 | 亚洲国产日韩欧美综合久久 | 嘿咻嘿咻免费区在线观看吃奶 | 国产精品久久久久久久久久久不卡 | 日韩一区二区三区精品 | 久久精品视频免费播放 | 亚洲视频2 | 国产精品久久久久久久久久久不卡 | 91在线亚洲综合在线 | 香蕉网伊在线中文慕大全 | 亚洲成人精品久久 | 国产精品原创 | 国产成人高清 | 国产深夜视频 | 国产精品免费视频一区二区三区 | 国产视频成人 | 亚洲va国产日韩欧美精品色婷婷 | 99视频在线| 欧美三级午夜理伦三级小说 | 欧美成人一区二区三区不卡视频 | 免费看黄片毛片 | 色九九视频 | 在线观看国产一区二区三区 | 欧美日韩在大午夜爽爽影院 | 日本中文在线观看 | 天天插狠狠干 | 国产成人精品免费视频网页大全 |