ホームページ  >  記事  >  Java  >  Springboot で mybatis とトランザクション管理を構成する方法

Springboot で mybatis とトランザクション管理を構成する方法

WBOY
WBOY転載
2023-05-10 19:13:221174ブラウズ

1. Spring Boot と mybatis の構成

1. まず第一に、mybatis を構成するために Spring Boot に必要なすべての依存関係は次のとおりです:

<!-- 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 から始まります。前にクラスパスを追加する必要があります。これは、mapper.xml ファイルが配置されている場所を指します. .

3. mybatis がデータベーステーブルのリバースエンジニアリングを通じて生成したエンティティクラスやマッパーなどです. まず、プロジェクトの具体的な配置構造を次のように投稿します:

Springboot で mybatis とトランザクション管理を構成する方法

上の図の説明は次のとおりです:

スタートアップ クラスは、他のクラスと比較してプロジェクト内の最上位に配置する必要があります。前の記事で述べたように、Spring Boot には従来の Spring プロジェクト設定の タグがありません。Bean をスキャンする方法は、スタートアップ クラスからデフォルトの組み込み Tomcat コンテナまでスキャンすることです。

上の図では、サービスが実装クラスの上位に配置されています。サービス A と B の 2 つがあり、実装クラスに Aimpl と Bimpl がある場合、Aimpl が B を呼び出すと、サービスは B にある可能性があります。コンテナーを開始すると、「‘B’ という名前のフィールドが見つかりません。」というエラーが表示され、コンテナーのスキャン順序が間違っていることを示します。

この状況に対する最善の解決策は、私がやったようにサービスを高い場所に置くことです。コンテナが起動すると、最初にサービスをスキャンし、次に impl をスキャンして、実装時にサービスを見つけられるようにします。クラススキャンサービスの場合、このエラーは発生しません。もう 1 つの解決策は、サービスの導入時に追加のアノテーションを追加することです: @Lazy

@Autowired
@Lazy //这样就会延迟加载,上图不需要,这里只是解释这注解
LogsUserActiveMapper logsUserActiveMapper;

つまり、呼び出しと呼び出される間に関係がある場合は、呼び出し先が最初にスプリング ブートにスキャンされる必要があることを覚えておく必要があります。組み込みコンテナ。つまり、呼び出し先のパッケージの位置をより高く配置する必要があります (位置は少なくとも等しい必要があります)。

4. @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

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

**これでmybatisの設定は完了です。

2. トランザクション設定

は、mybatis

1 に基づいて 2 つのアノテーションを追加することです。必要なアノテーションは、@ EnableTransactionManagement# です。 ## と @Transactional は 2 つで、次のパッケージから取得されます:

spring-tx.jar

このパッケージは実際には When にあります。依存関係を導入するように mybatis を設定すると、それらは自動的に導入されます。これは次のとおりです:

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

したがって、上記の依存関係が導入されている限り、トランザクションはパッケージを再度導入する必要はありません。

2. まず、サービス実装クラスを見つけて

@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 トランザクション管理構成、および @ を確認してください。トランザクション アノテーションは

3 を使用します。構成後、Spring Boot スタートアップ クラスはトランザクションを有効にする必要があり、トランザクションを有効にするために使用されるアノテーションは、次のように

@EnableTransactionManagement です。これでトランザクションの設定は完了です。

以上がSpringboot で mybatis とトランザクション管理を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。