springboot、Mybatis-plus工程多数据源字段映射不生效

1、多数据源配置文件
在这里插入图片描述
2、配置项
在这里插入图片描述
多个数据源配置项中分别添加配置

bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); //配置驼峰命名

或者
参考地址

@Configuration
@MapperScan(basePackages = "it.aspirin.riderserver.mapper.mysql", sqlSessionTemplateRef = "mySqlSessionTemplate")
public class MySQLDataSourceConfig {
 
    /**
     * 配置多数据源导致下划线命名映射为驼峰失效,需要在这里加一个配置,并在下面SqlSessionFactory方法中引入
     *
     * @return 配置
     */
    @Bean
    @ConfigurationProperties(prefix = "mybatis.configuration")
    public org.apache.ibatis.session.Configuration globalConfiguration() {
        return new org.apache.ibatis.session.Configuration();
    }
 
    /**
     * 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
     */
    @Bean(name = "mysqlDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.mysql")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
 
    @Bean(name = "mySqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        //这里将下划线映射为驼峰的配置引入
        bean.setConfiguration(globalConfiguration());
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql/*.xml"));
        return bean.getObject();
    }
 
    /**
     * 创建事务
     *
     * @param dataSource
     * @return
     */
    @Bean(name = "mysqlTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier("mysqlDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
 
    /**
     * 用于注入dao
     *
     * @param sqlSessionFactory
     * @return
     * @throws Exception
     */
    @Bean(name = "mySqlSessionTemplate")
    @Primary
    public SqlSessionTemplate SqlSessionTemplate(@Qualifier("mySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
 
    @Bean(name = "mysqlDataSource")
    public JdbcTemplate mysqlJdbcTemplate(@Qualifier(value = "mysqlDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中配置多数据源使用mybatis-plus,你可以按照以下步骤进行操作: 1. 首先,在`application.properties`(或`application.yml`)文件中配置你的数据源信息。假设你有两个数据源,分别为`datasource1`和`datasource2`,你可以在配置文件中添加以下内容: ```properties # 数据源1 spring.datasource.datasource1.url=jdbc:mysql://localhost:3306/db1 spring.datasource.datasource1.username=username1 spring.datasource.datasource1.password=password1 spring.datasource.datasource1.driver-class-name=com.mysql.jdbc.Driver # 数据源2 spring.datasource.datasource2.url=jdbc:mysql://localhost:3306/db2 spring.datasource.datasource2.username=username2 spring.datasource.datasource2.password=password2 spring.datasource.datasource2.driver-class-name=com.mysql.jdbc.Driver ``` 2. 创建两个数据源的配置类,用于配置和管理数据源。例如,创建`DataSource1Config`和`DataSource2Config`类,并在类上添加注解`@Configuration`。 ```java @Configuration public class DataSource1Config { @Bean(name = "dataSource1") @ConfigurationProperties(prefix = "spring.datasource.datasource1") public DataSource dataSource1() { return DataSourceBuilder.create().build(); } } @Configuration public class DataSource2Config { @Bean(name = "dataSource2") @ConfigurationProperties(prefix = "spring.datasource.datasource2") public DataSource dataSource2() { return DataSourceBuilder.create().build(); } } ``` 3. 创建两个`SqlSessionFactory`,分别指定对应的数据源。 ```java @Configuration @MapperScan(basePackages = "com.example.mapper1", sqlSessionFactoryRef = "sqlSessionFactory1") public class MybatisPlusConfig1 { @Autowired @Qualifier("dataSource1") private DataSource dataSource1; @Bean(name = "sqlSessionFactory1") public SqlSessionFactory sqlSessionFactory1() throws Exception { MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); factoryBean.setDataSource(dataSource1); return factoryBean.getObject(); } } @Configuration @MapperScan(basePackages = "com.example.mapper2", sqlSessionFactoryRef = "sqlSessionFactory2") public class MybatisPlusConfig2 { @Autowired @Qualifier("dataSource2") private DataSource dataSource2; @Bean(name = "sqlSessionFactory2") public SqlSessionFactory sqlSessionFactory2() throws Exception { MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); factoryBean.setDataSource(dataSource2); return factoryBean.getObject(); } } ``` 4. 创建两个事务管理器,分别指定对应的数据源。 ```java @Configuration public class TransactionManager1Config { @Autowired @Qualifier("dataSource1") private DataSource dataSource1; @Bean(name = "transactionManager1") public DataSourceTransactionManager transactionManager1() { return new DataSourceTransactionManager(dataSource1); } } @Configuration public class TransactionManager2Config { @Autowired @Qualifier("dataSource2") private DataSource dataSource2; @Bean(name = "transactionManager2") public DataSourceTransactionManager transactionManager2() { return new DataSourceTransactionManager(dataSource2); } } ``` 5. 最后,你可以在你的Mapper接口上使用`@Qualifier`注解指定使用哪个数据源。 ```java @Mapper public interface UserMapper1 { @Select("SELECT * FROM user") @Qualifier("sqlSessionFactory1") List<User> findAll(); } @Mapper public interface UserMapper2 { @Select("SELECT * FROM user") @Qualifier("sqlSessionFactory2") List<User> findAll(); } ``` 这样,你就成功配置了多数据源mybatis-plus。请根据实际需求修改配置和代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值