mybatis mapper.xml中根据数据库类型选择对应SQL语句

本文介绍了如何在 MyBatis 中配置 vendorDatabaseIdProvider,以便在 mapper.xml 文件中根据数据库类型(如 DB2, Oracle, MySQL)选择对应的 SQL 语句。在 spring-database.xml 文件中设置 vendorProperties,并在 SqlSessionFactoryBean 配置中引用,以实现动态选择 SQL。在 mapper.xml 中,可以通过 databaseId 属性来指定特定数据库的 SQL。" 112293161,10295828,SpringBoot启动卡住问题:日志无输出与线程堆栈排查,"['SpringBoot', '故障排查', '日志分析', '依赖管理', '版本匹配']

1、spring-database.xml文件中配置

  <bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
      <props>
        <prop key="DB2">db2</prop>
        <prop key="Oracle">oracle</prop>
        <prop key="MySQL">mysql</prop>
      </props>
    </property>
   </bean>
   <bean id="
databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
    <property name="properties" ref="
vendorProperties"/>

  </bean>

    对于sessionFactory的配置,主要是标红的语句一定要有,其它按照自己原有的配置走。

        <!-- sessionFactory 将spring和mybatis整合 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="databaseIdProvider" ref="databaseIdProvider" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="mapperLocations"
value="classpath*:/com/sunyard/cop/IF/mybatis/mapping/*.xml" />
<property name="plugins">
   <array>
     <bean class="com.github.pagehelper.PageInterceptor">
       <property name="properties">
         <!--使用下面的方式配置参数,一行配置一个,后面会有所有的参数介绍 -->
         <value>
        helperDialect=oracle
        reasonable=true
        supportMethodsArguments=true
        params=count=countSql
        autoRuntimeDialect=true
      </value>
       </property>
     </bean>
   </array>
         </property>
</bean>

2、mapper.xml文件中配置

    <select id="selectByUserNo" databaseId="mysql" parameterType="java.lang.String" resultMap="UserResultMap">

select * from SM_USERS_TB

    </select>

    <select id="selectByUserNo" parameterType="java.lang.String" resultMap="UserResultMap">

select * from SM_USERS_TB

    </select>

若写上databaseId = "mysql",则在数据源为mysql类型时,自动执行该SQL语句,若不写databaseId ,且同时存在相同ID的SQL语句,则只要是非mysql数据库的数据源,都会调用该条SQL语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值