本文讲的是MyBatis框架怎么切换数据库的环境:
分为以下几步:
在核心配置文件中:
1.编写environment标签
2.environments的default属性指定需要的environment的id值
3.配置数据库支持类
db.properties:
#oracle
oracle.driver=oracle.jdbc.OracleDriver
oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
oracle.username=scott
oracle.password=tiger
#mysql
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mydb?allowMultiQueries=true
mysql.username=root
mysql.password=root
conf.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>
<!-- 引用db.properties配置文件 -->
<properties resource="db.properties"/>
<!--default指定環境 -->
<environments default="devMysql">
<!--oracle -->
<environment id="devOracle">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${oracle.driver}" />
<property name="url"
value="${oracle.url}" />
<property name="username" value="${oracle.username}" />
<property name="password" value="${oracle.password}" />
</dataSource>
</environment>
<!--mysql -->
<environment id="devMysql">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}" />
<property name="url"
value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />
</dataSource>
</environment>
</environments>
<!-- 配置数据库支持类-->
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql" />
<property name="Oracle" value="oracle" />
</databaseIdProvider>
<mappers>
<!-- 加载映射文件 -->
<mapper resource="entity/studentMapper.xml"/>
</mappers>
</configuration>
具体使用时,在相应的mapper接口中指定databaseId:
<insert id="addStudent"
parameterType="com.yanqun.entity.Student" databaseId="mysql">
insert into student(stuNo,stuName,stuAge,graName)
values(#{stuNo} , #{stuName},#{stuAge},#{graName})
</insert>
如果不指定databaseId,myBatis会实现自适应。
当xml中既存在没有指定dataBaseId的sql语句,又存在指定dataBaseId的sql语句,他会默认优先执行有dataBaseId的