如何配置MyBatis中的SqlSessionFactory,为每个数据源创建一个SqlSessionFactory
时间: 2024-03-01 18:50:50 浏览: 34
要为每个数据源创建一个SqlSessionFactory,可以使用MyBatis提供的SqlSessionFactoryBean,并在配置文件中为它指定不同的数据源。具体步骤如下:
1. 在Spring容器中配置多个数据源,例如:
```
<bean id="firstDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/first_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean id="secondDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/second_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
```
2. 配置SqlSessionFactoryBean,为每个数据源创建一个SqlSessionFactory,例如:
```
<bean id="firstSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="firstDataSource"/>
<property name="typeAliasesPackage" value="com.example.first.db"/>
<property name="mapperLocations" value="classpath*:com/example/first/db/mappers/*.xml"/>
</bean>
<bean id="secondSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="secondDataSource"/>
<property name="typeAliasesPackage" value="com.example.second.db"/>
<property name="mapperLocations" value="classpath*:com/example/second/db/mappers/*.xml"/>
</bean>
```
这样就为每个数据源创建了一个对应的SqlSessionFactory,并分别指定了对应的Mapper接口路径和XML映射文件路径。这里的typeAliasesPackage是指定实体类的包路径,mapperLocations是指定Mapper接口和XML映射文件的路径。
接下来就可以在Mapper接口中使用@Qualifier注解指定使用哪个SqlSessionFactory了。例如:
```
@Mapper
@Qualifier("firstSqlSessionFactory")
public interface FirstMapper {
// ...
}
@Mapper
@Qualifier("secondSqlSessionFactory")
public interface SecondMapper {
// ...
}
```
这样就可以为不同的数据源配置不同的SqlSessionFactory了。