1. 程式人生 > >springboot配置mybatis和事務的管理

springboot配置mybatis和事務的管理

spring boot配置mybatis和事務管理
一、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等,先把專案具體的放置結構貼出來如下:

對於上圖的解釋如下:

啟動類必須放在專案中相對其他類的最高處,前邊文章說過,spring boot沒有傳統的spring 專案配置的<bean> 標籤,它掃描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的值

<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
1
**這樣就完成mybatis的配置了。
二、事務的配置,就是在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);
    }
}

這樣就完成了事務的配置。
--------------------- 
作者:JAVA碼上飄 
來源:CSDN 
原文:https://blog.csdn.net/wohaqiyi/article/details/72895983 

相關推薦

springboot配置mybatis事務管理

spring boot配置mybatis和事務管理 一、spring boot與mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依賴如下: <!-- Spring Boot 啟動父依賴 --> <parent>

spring boot配置mybatis事務管理

生成 很多 -s 順序 south 位置 ron 技術 username spring boot配置mybatis和事務管理 一、spring boot與mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依賴如下: <!-- Spri

Spring boot 瞭解(四)(整合mybatis事務管理

對於SpringBoot 整合mybatis和事務管理的記錄 (學習地址:https://www.majiaxueyuan.com/front/couinfo/36) 目錄 1.整合mybatis 2.事務管理 1.整合mybatis 1.新增依賴 <de

MyBatis事務管理快取機制

一、MyBatis的事務管理 1.事務的概念:事務是一個或幾個操作組成的一個整體執行單元,它們要麼全部執行,要麼全不執行,不能只執行其中的某幾個操作;可以理解為一個事務是一個程式中執行的最小單元。 2.事務的特性:事務包含四個特性:原子性、一致性、隔離性、永續性,簡稱ACID性,具體詳解如下

SpringBoot配置JPAmybatis雙資料來源

JPA配置為spring.datasource字首,mybatis為spring.datasource.eps開頭 1.建立DataSourceConfig配置類,來定義資料來源 其實 @Pr

Oracle的表創建事務管理

有效 reat 整體 eat 解決 nec pat serializa 二進制文件 Oracle的表創建和事務管理 - CURD,根據查詢結果創建新表 - 事務管理 - 什麽是事務 ,為什麽要用事務 - SQL99事務隔離級別 - Oracle事務

springboot 配置mybatis打印sql

evel css fig pan cati ive level std ogg 方式 一: ###########################################################配置打印sql########################

spring配置多個事務管理

<tx:annotation-driven/> <bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <prope

springboot配置myBatis專案如何在控制檯列印sql語句

最簡單的2種方法 aplication.properties種新增(方法一) logging.level.com.demo.hellow.service.mapper=debug 注意demo.hellow.service.mapper部分,替換成你自己要掃描的mapper檔案所在的

Spring+JTA+Atomikos+mybatis分散式事務管理

  背景描述:我們平時的工作中用到的Spring事務管理是管理一個數據源的。但是如果對多個數據源進行事務管理該怎麼辦呢?我們可以用JTA和Atomikos結合Spring來實現一個分散式事務管理的功能。 事務(官方解釋):是由一組sql語句組成的“邏輯處理單元”。 事務具有

springboot配置mybatis、druid

簡單地記錄一下mybatis、druid在springboot中的配置,有時候記性不好容易搞忘,特別是新學的druid,記錄下來方便以後翻閱。 Mybatis Mybatis就不用介紹了,直接上配置流程吧。 一、 引入Maven依賴 <!-- my

springboot 配置mybatis通用mapper

宣告: 此處為springboot 配置mybatis的通用mapper方 一共步其他多餘操作不要有 1新增mapper依賴 一定要有以下依賴的jar包 注意jar包版本,太高會導致功能不可用 <!-- Spring Boot Mybatis 依賴 --&

Springboot結合mybatismybatis generator的外掛,利用tk.mybatis的通用mapper實現逆向工程。

SpringBoot結合Mybatis的generator外掛以及tk.mybatis的通用mapper實現逆向工程的生成 1.首先在資料庫中建好表。 2.然後在pom中增加mybatis和通用mapper的依賴,以及generator的外掛。 3.需要自己在u

SpringBoot教程(六)springboot配置資料來源JDBC

一.基於Springboot預設的資料來源配置 1.配置pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht

springboot整合Mybatis事務、多資料來源、分散式事務

springboot整合Mybatis、事務、多資料來源 文章目錄 springboot整合Mybatis、事務、多資料來源 一. 整合Mybatis 二. 事務 2.1 回顧事務

四、spring的JDBC模板事務管理

Spring的JDBC模板 Spring是JavaEE開發的一站式框架,對各種持久化技術都提供了簡單的模板 ORM持久化技術 模板類 JDBC org.springframework.jdbc.core.JdbcTemplate

Spring整合MyBatis進行事務管理

1、引入的Spring和MyBatis依賴的jar包    引入c3p0.jar與mchange-commons.jar是為了使用資料庫連線池,資料庫連線池會在MyBatis以及Spring的事務管理器介面PlatformTransactionManager中使用到。    

Java學習筆記(12)Spring JDBC框架事務管理

Spring JDBC框架 JDBC框架概述: 在使用普通的 JDBC 資料庫時,就會很麻煩的寫不必要的程式碼來處理異常,開啟和關閉資料庫連線等。但 Spring JDBC 框架負責所有的低層細節,從開始開啟連線,準備和執行 SQL 語句,處理異常,處理

SpringBoot整合MyBatis開啟事務

需要要serviceImple類裡新增二個註解 @Transactional()所有的方法都使用事務 @Transactional(readOnly=true)  readOnly=true該方法不使用事務 package cn.et.ssmboot.serv

SpringBoot系列—mybatisspirng security

Spring 結合mybatis,以及Spring Security實現使用者認證(Authentication)和授權(Authorization)功能.Spring Security是專門針對基於Spring專案的 安全框架,充分利用依賴注入和AOP來實現安全功能。Sp