MyBatis之常见的全局配置

Properties标签

第一种:全局配置文件内部配置数据源信息

(1)在全局配置文件中编写数据源信息java

<properties>
    <!--name指定数据源名称,value指定其值-->
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
    <property name="username" value="root"/>
    <property name="password" value="12345"/>
</properties>

(2)获取数据源信息
<environments>中的<property>标签经过${name}获取数据源信息值,以下:mysql

<environments default="mysql">
<!--id设定编号-->
  <environment id="mysql">
      <transactionManager type="JDBC"></transactionManager>
      <!--MyBatis默认有三种数据源
          UNPOOLED 当须要数据库连接时建立,使用结束后销毁。
          POOLED 链接池,有容器的概念,当数据库链接使用完以后会被回收,以队列的形式排在队尾并赋予新的编号
                  提升了获取链接的效率
          JDNI 服务器提供的数据源,结构为Map
      -->
      <dataSource type="POOLED">
          <property name="driver" value="${driver}"/>
          <property name="url" value="${url}"/>
          <property name="username" value="${username}"/>
          <property name="password" value="${password}"/>
      </dataSource>
  </environment>
</environments>

第二种:外部配置数据源信息

(1)编写数据源信息
文件名:jdbcConfig.propertiessql

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

(2)引入外部配置文件
全局配置文件须要引入该文件,在全局配置文件中进行以下配置:数据库

<!--resource:外部文件的全路径 + 文件名-->
<properties resource="cofig/jdbcConfig.properties"/>

结构以下:
服务器

(3)获取配置源信息
<environments>中的<property>标签经过${name}获取数据源信息值,以下:mybatis

<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="JDBC"></transactionManager>
        <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>
</environments>

Setting标签

配置以下:oracle

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

typeAliases标签

第一种:用typeAlias标签配置

<typeAliases>
    <!--type:POJO类的全限定类名(全路径 + 文件名)
        alias:别名-->
    <typeAlias type="com.example.mybatis.pojo.User" alias="user"/>
    <typeAlias type="com.example.mybatis.pojo.Account" alias="account"/>
</typeAliases>

第二种:用package标签配置

<typeAliases>
    <!--name:存放POJO类的全路径 + 包名-->
    <package name="com.emample.mybatiscrud.pojo"/>
</typeAliases>

没有配置typeAliases前,resultType的值必须为POJO类的全限定类名
以下:app

<select id="findAll" resultType="com.emample.mybatiscrud.pojo.User">
    SELECT * FROM user
</select>

配置以后resultType能够直接写别名,以下:ide

<select id="findAll" resultType="user">
    SELECT * FROM user
</select>

起别名的好处是:提升了代码的可读性url

environments 标签

用于配置链接数据库的环境,基本配置以下

<environments default="mysql">
    <!--id设定编号-->
    <environment id="mysql">
        <transactionManager type="JDBC"></transactionManager>
        <!--MyBatis默认有三种数据源
            UNPOOLED 当须要数据库连接时建立,使用结束后销毁。
            POOLED 链接池,有容器的概念,当数据库链接使用完以后会被回收,以队列的形式排在队尾并赋予新的编号
                    提升了获取链接的效率
            JDNI 服务器提供的数据源,结构为Map
        -->
        <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>
</environments>

databaseIdProvider标签

该标签用于支持数据库的移植性

有两组数据库的数据源信息

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

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

除此以外,还须要添加两种类型的数据库驱动,全局配置文件配置两种数据库的环境,这里省略

在全局配置文件中配置databaseIdProvider,以下

<!--databaseProvider:支持多数据库厂商的;
type="DB——VENDOR",VendorDatabaseIdProvider
做用就是获得数据库厂商的表示(驱动getDatabaseProductName())-->
<databaseIdProvider type="DB_VENDOR">
    <!--为不一样的数据库厂商起别名-->
    <property name="MySqL" value="mysql"/>
    <property name="Oracle" value="oracle"/>
</databaseIdProvider>

一个抽象方法
UserDao

/**
 * 查询全部用户,同时获取用户下全部帐户的信息
 */
List<User> findAll();

多个同名配置
某些状况下,mysql和oracle执行的语句结构不同因此须要出现同名方法的多个配置
经过databaseId来指定在什么数据库环境下用哪一个配置

<select id="findAll" resultType="user" databaseId="oracle">
    select * FROM user
</select>

<select id="findAll" resultType="user" databaseId="mysql">
    select * FROM user
</select>

Mappers 标签

用于映射注册

第一种:适用于“接口 + 映射文件”的开发方式

<mappers>
    <!--resource指定映射文件的全路径+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
</mappers>

第二种:适用于“接口式”的开发方式

<mappers>
    <!--resource指定映射文件的全路径+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
    <mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
    <!--class指定接口文件的全路径 + 接口文件名-->
    <mapper class="com.emample.mybatiscrud.dao.UserDao"/>
</mappers>

第三种:package配置方式

<mappers>
    <!--resource指定映射文件的全路径+映射文件名-->
    <mapper resource="com/example/mybatiscrud/dao/UserDao.xml"/>
    <mapper resource="com/example/mybatiscrud/dao/RoleDao.xml"/>
    <!--name为存放接口文件的全路径 + 包名-->
    <package name="com.emample.mybatiscrud.dao"/>
</mappers>

前面两种配置方式都须要,没建立一个新的Mapper就须要注册一次
而是用package则不用

总结:

相关文章
相关标签/搜索