springboot intègre mybatis
Springboot intègre mybatis, en fait, ce n'est qu'une phrase: Mettez l'interface mapper de mybatis dans le conteneur de printemps pour la gestion, les étapes d'intégration suivantes
dépendance pom
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
<version>2.2.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.3</version>
<scope>compile</scope>
</dependency>
fichier de configuration de l'application
spring.datasource.url= jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapping/*Mapper.xml
# 如果这里统一指定了别名,在mapper.xml中,resultType可以直接使用bean中的类名,无需加上包名;
#mybatis.type-aliases-package=com.example.springboot.mybatis.bean
Informations d'annotation
En ce qui concerne le contrôleur, le service et mapper.xml, je ne les écrirai pas car ce sont toutes des configurations relativement courantes.
Lors de l'intégration, vous devez ajouter des notes, il existe deux options:
- Dans l'interface mapper (interface dao), l'annotation @Mapper est utilisée. De cette façon, vous pouvez intégrer sans utiliser de classes de configuration ou d'annotations @MapperScan.
- Dans l'interface du mappeur, utilisez l'annotation @Repository ou aucune annotation de tâche, ajoutez l'annotation @MapperScan à la classe de configuration complète et spécifiez le package à analyser
Dans le deuxième point, la classe de configuration complète fait référence à: soit ajouter directement l'annotation @MapperScan à la classe de démarrage springboot,
soit ajouter une classe de configuration vous-même, plus l'annotation @Configuration, ce qui signifie que la classe actuelle est une classe de configuration complète; puis ajouter On @MapperScan
# 这是方案一
@Configuration
@MapperScan("com.example.springboot.mybatis.dao")
public class OperChannelConfig {
}
//@Mapper
@Repository
public interface OperChannelMapper {
OperChannel getOperChannelById(int id);
}
# 方案二
@Configuration
//@MapperScan("com.example.springboot.mybatis.dao")
public class OperChannelConfig {
}
@Mapper
//@Repository
public interface OperChannelMapper {
OperChannel getOperChannelById(int id);
}
Pour la première méthode: si l'annotation @MapperScan est ajoutée et que l'annotation @Mapper est également ajoutée à l'interface dao, je débogue actuellement le code source, mais je ne vois pas l'annotation @MapperScan lors de la numérisation du package, où est l'annotation @ Mapper; je n'ose pas dire que l'ajout d'annotation @Mapper est inutile, mais lors de l'intégration, si l'annotation @MapperScan est ajoutée, il est vraiment inutile d'ajouter l'annotation @Mapper (actuellement j'utilise mybatis-springboot -autoconfigure- Version 1.3.3)
J'ai vérifié ces deux schémas et je suis sûr qu'ils sont réalisables;
Les deux solutions sont analysées par org.mybatis.spring.mapper.ClassPathMapperScanner # doScan (java.lang.String ...), mais le moment d'exécution des deux est différent et les classes de traitement des deux méthodes sont différentes:
pour cela manière d'utiliser l'annotation @MapperScan, c'est org.mybatis.spring.annotation.MapperScannerRegistrar à gérer.
Pour cette façon d'utiliser l'annotation @Mapper, c'est org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.AutoConfigurnerRegistrar pour terminer l'analyse.
J'ai vu beaucoup de blogs qui intègrent mybatis sur Internet. La plupart disaient: il faut ajouter des annotations @MapperScan et des annotations @Mapper. Ce n'est pas faux. Je pense juste que la technologie devrait être plus rigoureuse.