Table des matières
1. Configuration de Spring Boot et mybatis
二、事务的配置
Maison Java javaDidacticiel Comment configurer mybatis et la gestion des transactions dans Springboot

Comment configurer mybatis et la gestion des transactions dans Springboot

May 10, 2023 pm 07:13 PM
mybatis springboot

1. Configuration de Spring Boot et mybatis

1 Tout d'abord, toutes les dépendances requises pour Spring Boot pour configurer mybatis sont les suivantes :

<!-- 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>
Copier après la connexion

Ici, nous parlons principalement du package de pilotes de base de données ci-dessus. Oracle et MySQL introduisent différents. dépendances. Si vous oubliez de l'introduire, une exception de classe de pilote introuvable sera signalée.

2. Ensuite, ajoutez le contenu suivant dans le fichier de configuration application.properties : 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.*
Copier après la connexion

上边以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等,先把项目具体的放置结构贴出来如下:

Comment configurer mybatis et la gestion des transactions dans Springboot

对于上图的解释如下:

启动类必须放在项目中相对其他类的最高处,前边文章说过,spring boot没有传统的spring 项目配置的 标签,它扫描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;
Copier après la connexion

总之,如果出现调用与被调用关系,一定要记得,被调用者要首先被扫描进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);
    }
}
Copier après la connexion

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

<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
Copier après la connexion

**这样就完成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>
Copier après la connexion

所以只要上边的依赖引入进来,那事务就不需要再引入包了,

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);
}
Copier après la connexion

如果不知道里边都是什么东西,可以查看这篇文章,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);
    }
}
Copier après la connexion
Il existe en fait de nombreux contenus commençant par spring.datasource ci-dessus, en particulier dans application.properties et voyez sur quoi vous pouvez cliquer.   

springboot collectera les informations commençant par spring.datasource par défaut, configurera l'objet DataSource, puis configurera sqlSessionFactory et d'autres configurations de connexion à la base de données associées, donc de nombreuses autres personnes parleront des classes de configuration à écrire. je pense que ceux-ci ne sont pas nécessaires. (La configuration de Druid nécessite un @Bean)  🎜🎜Bien sûr, si elle est particulièrement détaillée et que la configuration correspondante ne peut pas être cliquée via spring.datasource dans le fichier application.properties, cela peut être Besoin de configurer des classes ou quelque chose comme ça. 🎜🎜mybatis.mapper-locations L'emplacement pointé commence à partir de src/main/resource, et le chemin de classe doit être ajouté devant. Il pointe vers l'emplacement où votre fichier mapper.xml est placé. 🎜🎜3. Mybatis a généré des classes d'entités, des mappeurs, etc. grâce à l'ingénierie inverse des tables de base de données. Tout d'abord, j'ai publié la structure de placement spécifique du projet comme suit : 🎜🎜Comment configurer mybatis et la gestion des transactions dans Springboot🎜🎜L'explication de l'image ci-dessus est la suivante :🎜 🎜La classe de démarrage doit être placée dans le projet. Par rapport au haut des autres classes, comme mentionné dans l'article précédent, Spring Boot n'a pas la balise traditionnelle configurée dans les projets Spring. depuis la classe de démarrage vers le conteneur Tomcat intégré par défaut. 🎜🎜Dans l'image ci-dessus, le service est placé au-dessus de sa classe d'implémentation. S'il y a deux services A et B, et qu'il y a Aimpl et Bimpl dans la classe d'implémentation, si Aimpl appelle B, il peut signaler "" au démarrage du conteneur. Un champ nommé « B introuvable » semble être une erreur, indiquant que l'ordre d'analyse du conteneur est erroné. 🎜🎜La meilleure solution à cette situation est de placer le service à un endroit élevé comme je l'ai fait. Lorsque le conteneur démarre, il analyse d'abord le service, puis analyse l'impl. De cette façon, le service peut définitivement être trouvé lors de l'implémentation. analyse de classe, c'est-à-dire Cette erreur ne se produira plus. Une autre solution consiste à ajouter une annotation supplémentaire lors de l'introduction du service : @Lazy🎜rrreee🎜En bref, s'il existe une relation entre appeler et être appelé, vous devez vous rappeler que l'appelé doit d'abord être scanné dans le conteneur intégré de Spring Boot. , c'est-à-dire be La position du package de l'appelant doit être placée plus haut (la position doit être au moins égale). 🎜🎜4. Une annotation @Service doit être ajoutée à la classe d'implémentation du service. Ce n'est peut-être pas nécessaire, je ne l'ai pas encore essayé.  🎜🎜5.spring boot+mybatis En plus de ces exigences, vous devez également ajouter une annotation @MapperScan à la classe de démarrage, comme suit :🎜rrreee🎜Ce qui suit est la valeur de l'espace de noms dans mon mapper.xml🎜 rrreee🎜**C'est fait Mybatis est configuré. 🎜🎜2. Configuration de la transaction🎜🎜Il s'agit d'ajouter deux annotations sur la base de mybatis🎜🎜1 Les annotations requises sont @EnableTransactionManagement et @Transactional <.> Deux, ils proviennent du package suivant : 🎜<blockquote>🎜spring-tx.jar🎜</blockquote>🎜En fait, ce package a été automatiquement introduit lorsque mybatis a été configuré pour introduire des dépendances, qui est le suivant : 🎜 rrreee🎜Donc, tant que les dépendances ci-dessus sont introduites, la transaction n'a pas besoin d'être importée dans le package 🎜🎜2 Tout d'abord, recherchez votre classe d'implémentation de service et ajoutez l'annotation <code>@Transactional. . Si vous l'ajoutez sur une classe, toutes les méthodes de la classe seront gérées par des transactions. Si vous l'ajoutez sur une méthode, alors seule cette méthode est conforme à la transaction spécifique. Bien sûr, nous l’ajoutons généralement à la méthode. Parce que seuls l’ajout, la suppression et la modification nécessiteront des transactions. 🎜🎜Par exemple, la méthode suivante d'insertion de données ajoute une transaction : 🎜rrreee🎜Si vous ne savez pas ce qu'il y a à l'intérieur, vous pouvez consulter cet article, spring, configuration de la gestion des transactions mybatis et utilisation de l'annotation @Transactional 🎜🎜3 Après. configuration, la classe de démarrage Spring Boot doit activer les transactions, et l'annotation utilisée pour activer les transactions est @EnableTransactionManagement, comme suit : 🎜rrreee🎜 Ceci termine la configuration de la transaction. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

iBatis vs MyBatis : lequel vous convient le mieux ? iBatis vs MyBatis : lequel vous convient le mieux ? Feb 19, 2024 pm 04:38 PM

iBatis vs MyBatis : lequel choisir ? Introduction : Avec le développement rapide du langage Java, de nombreux frameworks de persistance ont vu le jour. iBatis et MyBatis sont deux frameworks de persistance populaires, qui fournissent tous deux une solution d'accès aux données simple et efficace. Cet article présentera les fonctionnalités et les avantages d'iBatis et MyBatis, et donnera quelques exemples de code spécifiques pour vous aider à choisir le framework approprié. Introduction à iBatis : iBatis est un framework de persistance open source

Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Feb 26, 2024 pm 07:48 PM

Interprétation des balises SQL dynamiques MyBatis : explication détaillée de l'utilisation des balises Set MyBatis est un excellent cadre de couche de persistance. Il fournit une multitude de balises SQL dynamiques et peut construire de manière flexible des instructions d'opération de base de données. Parmi elles, la balise Set est utilisée pour générer la clause SET dans l'instruction UPDATE, qui est très couramment utilisée dans les opérations de mise à jour. Cet article expliquera en détail l'utilisation de la balise Set dans MyBatis et démontrera ses fonctionnalités à travers des exemples de code spécifiques. Qu'est-ce que Set tag Set tag est utilisé dans MyBati

Analyse comparative des fonctions et performances de JPA et MyBatis Analyse comparative des fonctions et performances de JPA et MyBatis Feb 19, 2024 pm 05:43 PM

JPA et MyBatis : analyse comparative des fonctions et des performances Introduction : Dans le développement Java, le framework de persistance joue un rôle très important. Les frameworks de persistance courants incluent JPA (JavaPersistenceAPI) et MyBatis. Cet article procédera à une analyse comparative des fonctions et des performances des deux frameworks et fournira des exemples de code spécifiques. 1. Comparaison des fonctions : JPA : JPA fait partie de JavaEE et fournit une solution de persistance des données orientée objet. Il est passé une annotation ou X

Différentes manières de mettre en œuvre des opérations de suppression par lots dans MyBatis Différentes manières de mettre en œuvre des opérations de suppression par lots dans MyBatis Feb 19, 2024 pm 07:31 PM

Plusieurs façons d'implémenter des instructions de suppression par lots dans MyBatis nécessitent des exemples de code spécifiques. Ces dernières années, en raison de la quantité croissante de données, les opérations par lots sont devenues une partie importante des opérations de base de données. Dans le développement réel, nous devons souvent supprimer des enregistrements de la base de données par lots. Cet article se concentrera sur plusieurs façons d'implémenter des instructions de suppression par lots dans MyBatis et fournira des exemples de code correspondants. Utilisez la balise foreach pour implémenter la suppression par lots. MyBatis fournit la balise foreach, qui peut facilement parcourir un ensemble.

Explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis Explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis Feb 20, 2024 am 08:31 AM

Une explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis nécessite des exemples de code spécifiques Introduction : MyBatis est un excellent cadre de couche de persistance qui fournit de riches fonctions d'opération SQL. Dans le développement de projets réels, nous rencontrons souvent des situations dans lesquelles les données doivent être supprimées par lots. Cet article présentera en détail comment utiliser les instructions de suppression par lots MyBatis et joindra des exemples de code spécifiques. Scénario d'utilisation : lors de la suppression d'une grande quantité de données dans la base de données, il est inefficace d'exécuter les instructions de suppression une par une. A ce stade, vous pouvez utiliser la fonction de suppression par lots de MyBatis

Explication détaillée du mécanisme de cache MyBatis : comprendre le principe du stockage en cache dans un article Explication détaillée du mécanisme de cache MyBatis : comprendre le principe du stockage en cache dans un article Feb 23, 2024 pm 04:09 PM

Explication détaillée du mécanisme de mise en cache MyBatis : Lisez le principe du stockage en cache dans un article Introduction Lorsque vous utilisez MyBatis pour l'accès à la base de données, la mise en cache est un mécanisme très important, qui peut réduire efficacement l'accès à la base de données et améliorer les performances du système. Cet article présentera en détail le mécanisme de mise en cache de MyBatis, y compris la classification du cache, les principes de stockage et des exemples de code spécifiques. 1. Classification du cache Le cache MyBatis est principalement divisé en deux types : le cache de premier niveau et le cache de deuxième niveau. Le cache de premier niveau est un cache de niveau SQLSession.

Explication détaillée du cache de premier niveau MyBatis : Comment améliorer l'efficacité de l'accès aux données ? Explication détaillée du cache de premier niveau MyBatis : Comment améliorer l'efficacité de l'accès aux données ? Feb 23, 2024 pm 08:13 PM

Explication détaillée du cache de premier niveau MyBatis : Comment améliorer l'efficacité de l'accès aux données ? Au cours du processus de développement, un accès efficace aux données a toujours été l’une des priorités des programmeurs. Pour les frameworks de couche de persistance comme MyBatis, la mise en cache est l'une des méthodes clés pour améliorer l'efficacité de l'accès aux données. MyBatis fournit deux mécanismes de mise en cache : le cache de premier niveau et le cache de deuxième niveau. Le cache de premier niveau est activé par défaut. Cet article présentera en détail le mécanisme du cache de premier niveau MyBatis et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre

Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Feb 25, 2024 pm 12:30 PM

Analyse du mécanisme de mise en cache MyBatis : la différence et l'application du cache de premier niveau et du cache de deuxième niveau Dans le framework MyBatis, la mise en cache est une fonctionnalité très importante qui peut améliorer efficacement les performances des opérations de base de données. Parmi eux, le cache de premier niveau et le cache de deuxième niveau sont deux mécanismes de mise en cache couramment utilisés dans MyBatis. Cet article analysera en détail les différences et les applications du cache de premier niveau et du cache de deuxième niveau, et fournira des exemples de code spécifiques pour illustrer. 1. Cache de niveau 1 Le cache de niveau 1 est également appelé cache local. Il est activé par défaut et ne peut pas être désactivé. Le cache de premier niveau est SqlSes

See all articles