spring整合mybatis配置sqlSessionFactory时是否要配置mapperLocations

当mybatis的xml文件和mapper接口不在相同包下时,需要用mapperLocations属性指定xml文件的路径。
*是个通配符,代表所有的文件,**代表所有目录下
在这里插入图片描述
在这里插入图片描述
但是当mybatis的xml文件和mapper接口在相同包下时,不需要配置mapperLocations属性指定xml文件的路径
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring整合MyBatis是我们在Java开发中经常使用的方式,其中配置多数据源是一种比较常见的需求,尤其是涉及到多个数据库的应用场景。下面将详细介绍如何配置多数据源并动态选择SqlSessionfactory。 首先,在Spring配置文件中我们需要定义多个数据源,这里我们以两个数据源为例,分别为datasource1和datasource2。 <bean id="datasource1" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db1"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <bean id="datasource2" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db2"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> 接着,我们需要配置SqlSessionFactory,这里主要是用到SqlSessionFactoryBean,其中使用的是MyBatisMapperLocations属性来指定mapper的位置。 <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource1"/> <property name="mapperLocations" value="classpath*:mappers1/*.xml"/> </bean> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource2"/> <property name="mapperLocations" value="classpath*:mappers2/*.xml"/> </bean> 然后,我们需要配置SqlSessionTemplate,这里使用了动态选择SqlSessionFactory的方式,通过自定义的SqlSessionTemplate实现。 <bean id="sqlSessionTemplate" class="com.example.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory1"/> <constructor-arg index="1" ref="sqlSessionFactory2"/> </bean> 其中,自定义的SqlSessionTemplate代码如下所示。 public class SqlSessionTemplate extends org.mybatis.spring.SqlSessionTemplate { private SqlSessionFactory targetSqlSessionFactory; public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory1, SqlSessionFactory sqlSessionFactory2) { super(sqlSessionFactory1); targetSqlSessionFactory = sqlSessionFactory2; } @Override public void clearCache() { super.clearCache(); ((org.apache.ibatis.session.defaults.DefaultSqlSession) targetSqlSessionFactory.openSession()).clearCache(); } @Override public SqlSessionFactory getSqlSessionFactory() { SqlSession sqlSession = super.getSqlSession(); if (sqlSession.getConfiguration().getEnvironment().getId().equals("datasource1")) { return super.getSqlSessionFactory(); } else { return targetSqlSessionFactory; } } } 最后在mybatismapper文件中使用namespace关键字来对应不同的数据源,这里以两个数据源为例,分别为namespace1和namespace2。 <mapper namespace="namespace1"> ...... </mapper> <mapper namespace="namespace2"> ...... </mapper> 至此,我们就完成了配置多数据源并动态选择SqlSessionfactory的过程,通过自定义的SqlSessionTemplate实现了动态切换数据源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值