zoukankan      html  css  js  c++  java
  • 4、MyBatis之常见的全局配置

    Properties标签

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

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

    <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}获取数据源信息值,如下:

    <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.properties

    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}获取数据源信息值,如下:

    <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标签

    配置如下:

    <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类的全限定类名
    如下:

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

    配置之后resultType可以直接写别名,如下:

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

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

    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则不用

    总结:

  • 相关阅读:
    一对一关联
    一对多关联
    软删除
    分层控制器
    系统的助手函数
    tp5命令行基础介绍
    PHP 开启跨域
    生成数据库模型文件
    REST API 安全设计指南
    jquery-Ajax请求用例码
  • 原文地址:https://www.cnblogs.com/Ryuichi/p/13303272.html
Copyright © 2011-2022 走看看