qq_21891465
kiboyiscoming
采纳率37.5%
2018-10-15 09:53

mybatis-plus的baseMapper的方法在配置了多数据源的情况下如何使用

5
已采纳

配置了多数据源后,mybatis-plus的baseMapper的里面的方法无法使用,必须在对应的xml中加上对应方法的配置才能使用

配置了多数据源后,mybatis-plus的baseMapper的里面的方法无法使用,必须在对应的xml中加上对应方法的配置才能使用

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • qq_21891465 kiboyiscoming 2年前

    最终配置如下

    package com.yt.config.jdbc;
    
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import javax.sql.DataSource;
    
    /**
     * @描述 多数据源连接配置类
     * @创建人 WS9430
     * @创建日期 2018-10-12
     */
    @Configuration
    public class JDBCDataSourceConfig {
        @Bean(name = "U8DataSource")
        @Qualifier("U8DataSource")
        @Primary
        @ConfigurationProperties(prefix="spring.datasource.druid.db1")
        public DataSource u8DataSource() {
            return DataSourceBuilder.create().build();
        }
    
    
    
        @Bean(name = "U8JdbcTemplate")
        public JdbcTemplate u8JdbcTemplate(@Qualifier("U8DataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
        @Bean(name = "OADataSource")
        @Qualifier("OADataSource")
        @ConfigurationProperties(prefix="spring.datasource.druid.db2")
        public DataSource oaDataSource() {
            return DataSourceBuilder.create().build();
        }
    
    
    
        @Bean(name = "OAJdbcTemplate")
        public JdbcTemplate oaJdbcTemplate(@Qualifier("OADataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
    
        @Bean(name = "U8DataSource3")
        @Qualifier("U8DataSource3")
        @ConfigurationProperties(prefix="spring.datasource.druid.db3")
        public DataSource u8DataSource3() {
            return DataSourceBuilder.create().build();
        }
    
    
    
        @Bean(name = "U8JdbcTemplate3")
        public JdbcTemplate u8JdbcTemplate3(@Qualifier("U8DataSource3") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
        @Bean(name = "U8DataSource4")
        @Qualifier("U8DataSource4")
        @ConfigurationProperties(prefix="spring.datasource.druid.db4")
        public DataSource u8DataSource4() {
            return DataSourceBuilder.create().build();
        }
    
    
    
        @Bean(name = "U8JdbcTemplate4")
        public JdbcTemplate u8JdbcTemplate4(@Qualifier("U8DataSource4") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
        @Bean(name = "U8DataSource5")
        @Qualifier("U8DataSource5")
        @ConfigurationProperties(prefix="spring.datasource.druid.db5")
        public DataSource u8DataSource5() {
            return DataSourceBuilder.create().build();
        }
    
    
    
        @Bean(name = "U8JdbcTemplate5")
        public JdbcTemplate u8JdbcTemplate5(@Qualifier("U8DataSource5") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
    }
    
    logging:
      level.root: info
      level.com.stylefeng: debug
      path: logs/
      file: guns.log
    # sqlserver数据库连接配置 S
    spring:
      aop:
        proxy-target-class: true
      datasource:
        db1:
          url: jdbc:sqlserver://12.1.236:1433;DatabaseName=UFDATA_107_2017 
          username: 1
          password: 1
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        db2:
          url: jdbc:sqlserver://1.1.52:1433;DatabaseName=ecology81 
          username: 1
          password: 1
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        db3:
          url: jdbc:sqlserver://11117.52:1433;DatabaseName=ecology81 
          username: 1
          password: 1
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        db4:
          url: jdbc:sqlserver://1.1.236:1433;DatabaseName=UFDATA_016_2016 
          username: 1
          password: 1
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        db5:
          url: jdbc:sqlserver://1.1.236:1433;DatabaseName=UFDATA_005_2018 
          username: 1
          password: 1
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        druid:
          initial-size: 10 #初始化连接数
          max-evictable-idle-time-millis: 20
          min-idle: 5 #最小空闲连接
          max-active: 500  #最大连接数量
          log-abandoned: true #是否在自动回收超时连接的时候打印连接的超时错误
          remove-abandoned: true #是否自动回收超时连接
          remove-abandoned-timeout: 600 #超时时间(以秒数为单位)
          max-wait: 5000  #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
          test-on-borrow: true #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
          test-while-idle: true #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
          validation-query: select 1 #检测数据库的查询语句
          min-evictable-idle-time-millis: 600000  #每隔五分钟检测空闲超过10分钟的连接
          time-between-eviction-runs-millis: 300000 #1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
          exception-sorter: true #根据dbType自动识别,当数据库抛出一些不可恢复的异常时,抛弃连接
          test-on-return: true  #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
    # sqlserver数据库连接配置 E
    
    # thymeleaf模板配置 S
      thymeleaf:
        prefix: classpath:/templates/
        suffix: .html
        mode: HTML5
        encoding: UTF-8
        cache: false #热部署文件,页面不产生缓存,及时更新
      resources:
        chain:
          strategy:
            content:
              enabled: true
              paths: /**
      mvc:
        static-path-pattern: /static/**
    
    
    #    #jdbc配置
    #    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    #    spring.datasource.url=jdbc:mysql:///test
    #    spring.datasource.username=root
    #    spring.datasource.password=root
    #    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    #
    #    #连接池的设置
    #    #初始化时建立物理连接的个数
    #    spring.datasource.druid.initial-size=5
    #    #最小连接池数量
    #    spring.datasource.druid.min-idle=5
    #    #最大连接池数量 maxIdle已经不再使用
    #    spring.datasource.druid.max-active=20
    #    #获取连接时最大等待时间,单位毫秒
    #    spring.datasource.druid.max-wait=60000
    #    #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    #    spring.datasource.druid.test-while-idle=true
    #    #既作为检测的间隔时间又作为testWhileIdel执行的依据
    #    spring.datasource.druid.time-between-eviction-runs-millis=60000
    #    #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
    #    spring.datasource.druid.min-evictable-idle-time-millis=30000
    #    #用来检测连接是否有效的sql 必须是一个查询语句
    #    #mysql中为 select 'x'
    #    #oracle中为 select 1 from dual
    #    spring.datasource.druid.validation-query=select 'x'
    #    #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
    #    spring.datasource.druid.test-on-borrow=false
    #    #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
    #    spring.datasource.druid.test-on-return=false
    #    #当数据库抛出不可恢复的异常时,抛弃该连接
    #    spring.datasource.druid.exception-sorter=true
    #    #是否缓存preparedStatement,mysql5.5+建议开启
    #    #spring.datasource.druid.pool-prepared-statements=true
    #    #当值大于0时poolPreparedStatements会自动修改为true
    #    spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
    #    #配置扩展插件
    #    spring.datasource.druid.filters=stat,wall
    #    #通过connectProperties属性来打开mergeSql功能;慢SQL记录
    #    spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    #    #合并多个DruidDataSource的监控数据
    #    spring.datasource.druid.use-global-data-source-stat=true
    #    #设置访问druid监控页的账号和密码,默认没有
    #    #spring.datasource.druid.stat-view-servlet.login-username=admin
    #    #spring.datasource.druid.stat-view-servlet.login-password=admin
    #
    #    #jpa设置
    #    spring.jpa.database=mysql
    #    spring.jpa.show-sql=true
    #    spring.jpa.hibernate.ddl-auto=update
    
    
    
    
    点赞 评论 复制链接分享
  • tre_L tre_L 2年前

    还是没说baseMapper怎么解决的啊?

    点赞 4 评论 复制链接分享
  • hellopeng1 hellopeng1 3年前

    图片说明
    可能是SqlSessionFactory注入的不对重新注入个, 最好此方法上再加个@Primary注解

    点赞 1 评论 复制链接分享
  • qq_15003505 Young·Ledo 6月前

    这个只是配置了数据源而已,但是继承的BaseMapper的方法还是不能用吧?

    点赞 评论 复制链接分享
  • yjq_0516 苏北小杨 2年前

    查看自己的代码是否有DynamicDataSource.clearDataSource()操作,可能在操作之前进行了清空,然后就会使用默认的数据源,可以在查询前打印出String datasource = DynamicDataSource.getDataSource();进行验证

    @Pointcut("(@annotation(com.weby.common.annotation.DataSource)) || (@within(com.weby.common.annotation.DataSource))") 这样切应该不合理,改为@Pointcut("execution(* com.weby.*.service..*(..))")

    点赞 评论 复制链接分享
  • xiaoxiaohaipi xiaoxiaohaipi 2年前

    请问,大兄弟,解决了吗?

    点赞 评论 复制链接分享

相关推荐