springboot +mybatis配置mapper.xml兼容多个数据库类型

本文介绍了如何在SpringBoot+Mybatis项目中实现一个mapper.xml文件兼容Oracle, MySQL, SQL Server和H2等多个数据库。通过配置DataSoure、JdbcTemplate、DatabaseIdProvider和SqlSessionFactoryBean,动态处理不同数据库的SQL语句差异,例如使用||或+进行字符串连接。在mapper.xml中,可以通过databaseId属性指定特定数据库的SQL片段。" 51375362,4935051,MapReduce在数据去重中的应用,"['大数据处理', 'MapReduce', '数据清洗', '数据处理', 'Hadoop']
摘要由CSDN通过智能技术生成

比如一个mapper.xml文件需要同时具备兼容oracle,mysql,sql server,h2…
那么问题就来了,如在sql中动态传入的条件 <if test “contno != null and contno!=” " ">
contno like ‘%’||#{contno}||’%’ 这种字符串连接||只适用于oracle,而在mysql,sql server中是不适用的, oracle,mysql都可以用concat()函数进行连接,oracle的concat()只能传入两个参数,而mysql的可以传入多个参数,sqlserver则不能用concat()函数 ,只能用+来进行字符串的连接。
那么怎么解决呢?话不多说:
首先需要编写一个配置类:
/**

  • 数据源配置
    */
    @Configuration
    public class DataSourceConfig {
    @Value("${mybatis.mapper-locations}")
    private String mapperLocations;

    @Primary
    @Bean
    @ConfigurationProperties(prfix = “spring.datasource.druid”)
    public DataSource dataSource(){
    return DruidDataSourceBuilder.create().build();
    }

    @Bean
    public JdbcTemplate jdbcTemplate(){
    return new JdbcTemplate(dataSource());
    }

    @Bean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值