欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot配置mybatis和事務(wù)管理方式

 更新時間:2023年04月08日 15:00:41   作者:茁壯成長的凌大大  
這篇文章主要介紹了springboot配置mybatis和事務(wù)管理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、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>
<!--以上內(nèi)容放在dependencies標(biāo)簽外,如果你有已經(jīng)有父標(biāo)簽,那將以上部分粘貼到父項目中-->
<!-- spring boot 項目啟動必須引入的web依賴,以下內(nèi)容放在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的數(shù)據(jù)庫驅(qū)動包 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4.0-atlassian-hosted</version>
</dependency>

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

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

##數(shù)據(jù)庫連接信息
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
##指向?qū)嶓w類的位置
mybatis.type-aliases-package=cloud.user.models.*

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

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

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

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

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

這里寫圖片描述

對于上圖的解釋如下:

啟動類必須放在項目中相對其他類的最高處,前邊文章說過,spring boot沒有傳統(tǒng)的spring 項目配置的<bean> 標(biāo)簽,它掃描bean的方式就是從啟動類依次向下掃描進(jìn)默認(rèn)的內(nèi)置tomcat容器的。

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

這種情況的最好的解決辦法,就應(yīng)該像我將service放在高處,容器啟動先掃描進(jìn)service,然后再掃描impl,這樣在實現(xiàn)類掃描的時候就肯定能找到service,也就不會出現(xiàn)這種錯誤了。另一種解決辦法是在引入service時多添加一個注解:@Lazy

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

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

4.service實現(xiàn)類上需要加一個@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實現(xiàn)類中加入事務(wù)注解,需要此處添加該注解
@MapperScan("cloud.kafka.mapper")  //掃描的是mapper.xml中namespace指向值的包位置
public class KafkaLogApplication {
    public static void main(String[] args){
        SpringApplication.run(KafkaLogApplication.class, args);
    }
}

如下是我的mapper.xml里namespace的值

<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >

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

二、事務(wù)的配置

就是在mybatis的基礎(chǔ)上加上兩個注解

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>

所以只要上邊的依賴引入進(jìn)來,那事務(wù)就不需要再引入包了, 

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

比如下邊的一個插入數(shù)據(jù)的方法添加事務(wù):

@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事務(wù)管理配置與@Transactional注解使用

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

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

這樣就完成了事務(wù)的配置。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java文件操作輸入輸出結(jié)構(gòu)詳解

    java文件操作輸入輸出結(jié)構(gòu)詳解

    這篇文章主要介紹了java文件操作輸入輸出詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 一文詳解各種ElasticSearch查詢在Java中的實現(xiàn)

    一文詳解各種ElasticSearch查詢在Java中的實現(xiàn)

    Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎,下面這篇文章主要給大家介紹了關(guān)于各種ElasticSearch查詢在Java中實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Java中的volatile關(guān)鍵字解析

    Java中的volatile關(guān)鍵字解析

    這篇文章主要介紹了Java中的volatile關(guān)鍵字解析,Java內(nèi)存模型規(guī)定了所有的變量都存儲在主內(nèi)存中,每個線程都有自己的工作內(nèi)存,線程的工作內(nèi)存保存了該線程使用到的變量的是主內(nèi)存副本的拷貝,需要的朋友可以參考下
    2023-11-11
  • SpringSecurity自定義登錄界面

    SpringSecurity自定義登錄界面

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity自定義登錄界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • java如何執(zhí)行l(wèi)inux命令

    java如何執(zhí)行l(wèi)inux命令

    這篇文章主要介紹了java如何執(zhí)行l(wèi)inux命令問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring Boot實現(xiàn)接口簽名驗證的過程

    Spring Boot實現(xiàn)接口簽名驗證的過程

    在Spring Boot中實現(xiàn)接口校驗簽名通常是為了保證接口請求的安全性和數(shù)據(jù)的完整性,這篇文章主要介紹了Spring Boot實現(xiàn)接口簽名驗證,需要的朋友可以參考下
    2024-04-04
  • Java編程用兩個棧實現(xiàn)隊列代碼分享

    Java編程用兩個棧實現(xiàn)隊列代碼分享

    這篇文章主要介紹了Java編程用兩個棧實現(xiàn)隊列代碼分享,具有一定參考價值,這里給大家分享下,供需要的朋友了解。
    2017-10-10
  • maven打包如何指定jdk的版本

    maven打包如何指定jdk的版本

    這篇文章主要介紹了maven打包如何指定jdk的版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java實現(xiàn)畫圖 給圖片底部添加文字標(biāo)題

    Java實現(xiàn)畫圖 給圖片底部添加文字標(biāo)題

    這篇文章主要介紹了Java實現(xiàn)畫圖 給圖片底部添加文字標(biāo)題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java實現(xiàn)簡單猜拳小游戲

    java實現(xiàn)簡單猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論