最近在学习mybatis的源码,有一个databaseIdProvider
根据不同数据库执行不同sql的功能,我正好有一个mysql还有一个瀚高数据库,就去试了一下,使用如下
pom文件导入两个数据库的驱动
xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>com.highgo</groupId>
<artifactId>HgdbJdbc</artifactId>
<version>6.2.2</version>
</dependency>
主启动类.java
java
public class MybatisHelloWorld {
public static void main(String[] args) throws Exception {
String resource = "org/mybatis/config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getUsers(1);
session.close();
}
}
User.java
java
public class User {
private Integer id;
private String name;
private Integer age;
//....getter setter 构造..
}
UserMapper.java
java
public interface UserMapper {
List<User> getUsers(int age);
}
UserMapper.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.mapper.UserMapper" >
<select id="getUsers" resultType="org.mybatis.pojo.User" databaseId="mysql">
select * from user where age = #{age}
</select>
<select id="getUsers" resultType="org.mybatis.pojo.User" databaseId="postgresql">
select * from mybatis.user where age = #{age}
</select>
</mapper>
Mybatis配置文件
xml
<configuration>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="