前言
这里展示的是双数据源的配置,为了增加一定的代表性,这里采用两个不同的数据库Orcale和Mysql作为数据源。
依赖
<!-- orcale驱动包 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<!-- JDBC:mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
<scope>runtime</scope>
</dependency>
<!-- Mybatis_plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
<exclusions>
<exclusion>
<artifactId>jsqlparser</artifactId>
<groupId>com.github.jsqlparser</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
目录结构
操作实体类
person
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
public class Person {
private Integer id;
private String name;
private Integer age;
private String parentName;
public Person() {
}
public Person(String name, Integer age, String parentName) {
this.name = name;
this.age = age;
this.parentName = parentName;
}
}
数据源配置
Mysql
mysql-mybatis-config.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>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="jdbc"/>
<dataSource type="pooled">
<property name="url" value="jdbc:mysql://localhost:3306/xmltest?characterEncoding=utf8"/>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="shijian"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mysqlPersonMapper.xml"/>
</mappers>
</configuration>
Orcale
orcale-mybatis-config.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>
<environments default="wsj">
<environment id="wsj">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl?Unicode=true&characterEncoding=UTF-8&useSSL=false"/>
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="username" value="testrole"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="orcalePersonMapper.xml"/>
</mappers>
</configuration>
映射文件
Mysql
mysqlPersonMapper.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="com.example.summary.dao.MysqlPersonMapper">
<select id="getAll" resultType="com.example.summary.util.Person">
SELECT * FROM person
</select>
</mapper>
Orcale
orcalePersonMapper.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="com.example.summary.dao.OrcalePersonMapper">
<select id="getAll" resultType="com.example.summary.util.Person">
SELECT * FROM person
</select>
</mapper>
mapper
import com.example.summary.util.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface MysqlPersonMapper {
List<Person> getAll();
}
import com.example.summary.util.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface OrcalePersonMapper {
List<Person> getAll();
}
配置注入
Mysql
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MySQLMyBatisUtil {
private static SqlSessionFactory factory;
//初始化SqlSessionFactory
static {
try (InputStream inputStream = Resources.getResourceAsStream("mysql-mybatis-config.xml")) {
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(inputStream);
} catch (IOException e) {
e.printStackTrace();
System.exit(0);
}
}
// 获取sqlSession
public static SqlSession getSession() {
SqlSession sqlSession = factory.openSession(ExecutorType.BATCH);
return sqlSession;
}
}
Orcale
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class OrcaleMyBatisUtil {
static InputStream inputStream;
//初始化SqlSessionFactory
static {
try {
inputStream = Resources.getResourceAsStream("orcale-mybatis-config.xml");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private static SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
private static SqlSession sqlSession = factory.openSession(ExecutorType.BATCH);
// 获取sqlSession
public static SqlSession getSession() {
return sqlSession;
}
}
测试
元数据
Mysql
Orcale
测试代码
import com.example.summary.common.MySQLMyBatisUtil;
import com.example.summary.common.OrcaleMyBatisUtil;
import com.example.summary.dao.MysqlPersonMapper;
import com.example.summary.dao.OrcalePersonMapper;
import org.apache.ibatis.session.SqlSession;
public class Main {
public static void main(String[] args) {
SqlSession orcaleSession = OrcaleMyBatisUtil.getSession();
OrcalePersonMapper orcalePersonMapper = orcaleSession.getMapper(OrcalePersonMapper.class);
SqlSession mysqlSession = MySQLMyBatisUtil.getSession();
MysqlPersonMapper mysqlPersonMapper = mysqlSession.getMapper(MysqlPersonMapper.class);
System.out.println("Orcale数据库-------------");
System.out.println(orcalePersonMapper.getAll());
orcaleSession.close();
System.out.println("MySQL数据库--------------");
System.out.println(mysqlPersonMapper.getAll());
mysqlSession.close();
}
}