下面的解释中有一个databaseId属性: 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。新增,修改和删除都有这个属性
一、在configuration.xml配置
二、新建Mapper
public interfaceDatabaseIdProviderMapper {
String selectTime();
}
三、新建 DatabaseIdProvider.xml
SELECT NOW() FROM dual
SELECT ‘oralce‘||to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) FROM dual
四、在configuration.xml中添加映射器
五、jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis-learn?characterEncoding=utf8
jdbc.username=root
jdbc.password=tiger
#jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:1521:mybatis
#jdbc.username=mybatis
#jdbc.password=mybatis
maxActive= 50
六、测试
importcom.yihaomen.mybatis.dao.DatabaseIdProviderMapper;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importuser.BaseTest;public class DatabaseIdProviderTest extendsBaseTest{public static voidmain(String[] args) {
SqlSessionFactory factory=getSession();
SqlSession session=factory.openSession();
DatabaseIdProviderMapper mapper= session.getMapper(DatabaseIdProviderMapper.class);
System.out.println(mapper.selectTime());
}
}
结果说明如果当前启用的是oracle则执行databaseId=”oracle”的语句,如果mysql值执行databaseId=”mysql”的语句
参考文献:
[1] 杨开振 著,《深入浅出MyBatis技术原理与实战》, 电子工业出版社,2016.09
原文:http://www.cnblogs.com/happyflyingpig/p/7689289.html