Separación de lectura y escritura integrada SpringBoot + MyBatisPlus

Todos, informé un error al usar MybatisPlus (denominado MP) hoy, y no he podido encontrar los métodos de acceso directo en la capa del mapeador, como insertar, eliminar, etc.
No lo encontré durante varias horas. Los archivos de configuración estaban bien, pero no pude encontrar el método de empaquetado de la capa del mapeador. Finalmente, me di cuenta de que era porque la separación de lectura y escritura estaba configurada y la fábrica de sql se utilizó para implementar mybatisplus.
Entonces quiero registrar este error y compartirlo contigo por cierto.

Primero mira el archivo de configuración: yml

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Los directorios de archivos están uno frente al otro.
Luego está la separación de lectura y escritura.

package com.huayi.dataConfig;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.annotation.Resource;
import javax.sql.DataSource;

@EnableTransactionManagement
@Configuration
@MapperScan(basePackages = {
    
    "com.huayi.mapper"})
public class MyBatisConfig {
    
    

    @Resource(name = "myRoutingDataSource")
    private DataSource myRoutingDataSource;

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
    
    
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(myRoutingDataSource);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapper/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }



    @Bean
    public PlatformTransactionManager platformTransactionManager() {
    
    
        return new DataSourceTransactionManager(myRoutingDataSource);
    }

}

Luego, inicie el proyecto y llame al método de acceso directo de MP que informará un error y no se puede encontrar el método.
Debido a que el proyecto anterior no configuró la separación lectura-escritura, la configuración de mi MP para este proyecto fue absolutamente correcta, pensé que era por el problema de la separación lectura-escritura configurando la pieza de fábrica SQL, y luego Baidu tomó un mira, y efectivamente, jejeje, por mí lo encontré.
Utilice MybatisSqlSessionFactoryBean () para resolver el problema de que el asignador de mybatis-plus no se puede escanear al escanear el paquete.
Si desea usar MP, Mybatis también debe proporcionar la fábrica de enlaces sql, baomidou es muy poderoso, todos los cuales se usan, jajaja, y luego se cambia la configuración.

package com.huayi.dataConfig;


import com.baomidou.mybatisplus.MybatisConfiguration;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.annotation.Resource;
import javax.sql.DataSource;

@EnableTransactionManagement
@Configuration
@MapperScan(basePackages = {
    
    "com.huayi.mapper"})
public class MyBatisConfig {
    
    

    @Resource(name = "myRoutingDataSource")
    private DataSource myRoutingDataSource;

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
    
    
        MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
        MybatisConfiguration mybatisConfiguration = new MybatisConfiguration();
        mybatisConfiguration.addInterceptor(new PaginationInterceptor());
        bean.setConfiguration(mybatisConfiguration);
        bean.setDataSource(myRoutingDataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapper/*Mapper.xml"));
        return bean.getObject();
    }



    @Bean
    public PlatformTransactionManager platformTransactionManager() {
    
    
        return new DataSourceTransactionManager(myRoutingDataSource);
    }

}

Cuando pensé que era mejor y estaba a punto de iniciar el proyecto, informé un error directamente. No se pudo encontrar la fábrica de sql.
Más tarde se descubrió que se debía a la versión MP.
El paquete de mybatisPlus y la integración de Spring no parece coincidir con la versión de MP, y luego se intercambió una versión.
A continuación se muestran los frascos de MAVNE y gradle.
MAVEN

<!-- boot mybatisplus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatisplus-spring-boot-starter</artifactId>
            <version>1.0.5</version>
        </dependency>
        <!--MP-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.0.7</version>
        </dependency>

Gradle
Acabo de comenzar a aprender a usar Gradle en los últimos días y no se ha aplicado a los proyectos de la empresa. Cuando estaba ayudando a mi colega a encontrar un problema hoy (usó maven), era obvio que Gradle era simple y el frasco estaba claro y claro.
El pom de Maven tendrá más código cuando haya más frascos. No es tan fuerte como Gradle en cuanto a rendimiento en lectura.

    // mybatis plus
    compile "com.baomidou:mybatisplus-spring-boot-starter:1.0.5"
    // https://mvnrepository.com/artifact/com.baomidou/mybatis-plus
    compile group: 'com.baomidou', name: 'mybatis-plus', version: '2.0.7'

Después de reemplazar el Jar, el proyecto se lanzó con éxito y también se puede llamar con éxito al método de acceso directo MP.

Supongo que te gusta

Origin blog.csdn.net/ChenLong_0317/article/details/103161499
Recomendado
Clasificación