6、mybatis主配置文件之databaseIdProvider

1、databaseIdProvider:支持多數據庫廠商的語句

type=“DB_VENDOR”,
VendorDatabaseIdProvider作用就是得到數據庫廠商的標識(驅動),mybatis就能根據數據庫廠商標識來執行不同的sql;MySQL,Oracle,SQL Server,xxx

2、增加oracle 的驅動配置文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mi</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4.0-atlassian-hosted</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

3、主配置文件增加databaseIdProvider配置

<?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>
    <!--
        1、
        mybatis可以使用properties來引入外部properties配置文件的內容
        resource 引入類路徑下的配置文件,
        url 引入網絡路徑或磁盤路徑下的資源
    -->
    <properties resource="dbconfig.properties"></properties>

    <!--
        2、
        settings 包含很多重要的設置項
        setting 用來設置每一個設置項
        name 設置項名
        value 設置項取值
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!--
        3、
        typeAliases:別名處理器,可以爲java類型起別名,別名不區分大小寫
        typeAlias:爲某個java類型起別名
        type:指定要起別名的類型全類名;默認別名是類名小寫:employee
        alias:指定新的別名
        package:爲某個包下的所有類批量起別名
        name:指定包名(爲當前包以及下面所有的後代包的每一個類都起一個默認別名(類名小寫))
        批量起別名的情況下,類名重複時,可以使用@Alias註解爲某個類型指定新的別名
    -->
    <typeAliases>
        <!--<typeAlias type="com.mi.pojo.Employee" alias="emp"/>-->

        <package name="com.mi.pojo"/>
    </typeAliases>

    <!--
        4、
        environments:環境,mybatis可以配置多種環境,default指定使用某種環境,可以達到快讀切換環境
        environment:配置一個具體的環境信息,必須有兩個標籤,id代表當前環境的唯一標識
        transactionManager:事務管理器
        type:事務管理器的類型 JDBC| MANAGED 自定義事務管理器,實現transactionFactory接口,type指定爲全類名
        dataSource:數據源
        type:UNPOOLED| POOLED | JNDI 自定義數據源,實現DataSourceFactory接口,type指定全類名
    -->
    <environments default="mysqldev">
        <environment id="mysqldev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
        <environment id="orcldev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${orcl.driver}"/>
                <property name="url" value="${orcl.url}"/>
                <property name="username" value="${orcl.username}"/>
                <property name="password" value="${orcl.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--
        5、
        databaseIdProvider:支持多數據庫廠商的語句
        type="DB_VENDOR",   VendorDatabaseIdProvider 作用就是得到數據庫廠商的標識(驅動),mybatis就能根據數據庫廠商標識來執行不同的sql;
        MySQL,Oracle,SQL Server,xxx
    -->
    <databaseIdProvider type="DB_VENDOR" >
        <!--爲不同數據庫廠商起別名-->
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>


    <mappers>
        <mapper resource="mapper/EmployeeMapper.xml"/>
    </mappers>
</configuration>

4、外部引用配置增加oracle的配置

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

orcl.driver=oracle.jdbc.driver.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=tiger

5、EmployeeMapper.xml文件增加oracle相關的sql,以databaseId區分

<?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.mi.dao.EmployeeMapper">
    <!--id 爲接口的方法名-->
    <select id="getEmployeeById" resultType="employee" databaseId="mysql">
        select * from employee where id = #{id}
    </select>

    <select id="getEmployeeById" resultType="employee" databaseId="oracle">
        select EMPNO id,ENAME lastName from emp where empno = #{id}
    </select>
</mapper>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章