【问题标题】:Multiple Database connection for mybatis and spring boot application using config.xml使用 config.xml 用于 mybatis 和 spring boot 应用程序的多个数据库连接
【发布时间】:2018-09-23 09:24:49
【问题描述】:

我需要连接到我的 config.xml 文件中配置的多个数据库

config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>

     <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.ibm.as400.access.AS400JDBCDriver"/>
                <property name="url" value="url"/>
                <property name="username" value="usernmae"/>
                <property name="password" value="password"/>
            </dataSource>
       </environment>
          <environment id="test">
          <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.ibm.as400.access.AS400JDBCDriver"/>
                <property name="url" value="url"/>
                <property name="username" value="usernmae"/>
                <property name="password" value="password"/>
            </dataSource>
       </environment>


     </environments> 

</configuration>

我正在使用 mapper 接口和 mapper.xml 进行查询

映射器界面

 @Mapper
    public interface OrderMapper {
     List<Order> selectAll();
     }

Mapper.xml

<mapper namespace="com.mapper.OrderMapper" >

 <resultMap id="result" type="com.mapper.Order">
    <result property="orderId"  jdbcType="NUMERIC" column="ORD_ORDER_ID"/>  
 </resultMap> 

  <select id="selectAll" resultMap="result">
    SELECT * FROM table
  </select>
</mapper>

Application.properties

mybatis.config-location = classpath:./config.xml
mybatis.mapper-locations=./mapper/*.xml

我可以通过在属性文件中使用 spring 数据源来为单个数据库工作..nut 我无法通过配置文件使其工作..我做错了什么?

【问题讨论】:

标签: java xml spring-boot mybatis mapper


【解决方案1】:

Spring 不知道 mybatis 中配置的数据源。 Spring 需要访问数据源才能创建连接。在 spring-boot 中,这是由 DataSourceTransactionManager 完成的,它使用在 spring 上下文中配置的数据源。

如果你想改变那将需要你实现你自己的PlatformTransactionManager,类似于DataSourceTransactionManager,但它使用由mybatis创建和管理的数据源。这可能可以通过访问由MybatisAutoConfiguration 创建的mybatis Configuration 对象来完成,如果您使用spring boot(或者您甚至可能需要检查数据源是如何创建并注入到spring 上下文中的)。这是相当复杂的,你会违背它应该的方式(即在 spring 上下文中定义数据源)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 2023-01-15
    • 2020-05-04
    • 2017-07-31
    • 1970-01-01
    • 2018-09-24
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多