spring整合mybatis设置databaseid不生效
时间: 2023-07-22 22:17:43 浏览: 137
在Spring整合MyBatis时,配置`databaseId`属性需要在`SqlSessionFactoryBean`中进行配置。以下是一个示例配置:
```xml
<!-- 配置SqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mapper/*.xml"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="databaseIdProvider">
<bean class="org.mybatis.spring.mapping.DatabaseIdProvider">
<property name="properties">
<props>
<prop key="MySQL">mysql</prop>
<prop key="Oracle">oracle</prop>
</props>
</property>
</bean>
</property>
</bean>
```
在这个配置中,`databaseIdProvider`属性指定了一个`DatabaseIdProvider`对象,用于根据数据库类型返回对应的`databaseId`。`properties`属性中,键为数据库类型,值为对应的`databaseId`。
接下来,需要在SQL映射文件中使用`databaseId`属性来实现多数据库厂商支持,例如:
```xml
<select id="getUser" resultType="User" databaseId="mysql">
SELECT * FROM user
</select>
<select id="getUser" resultType="User" databaseId="oracle">
SELECT * FROM user
</select>
```
在以上示例中,`databaseId`属性指定了针对MySQL和Oracle数据库的不同SQL语句。
如果以上配置仍然无法解决`databaseId`属性不生效的问题,您可以提供更多的配置信息和错误日志,我会尽力帮助解决问题。
阅读全文