zoukankan      html  css  js  c++  java
  • 掌握Mybatis的核心配置文件

    一、配置文件结构

    MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和影响MyBatis行为的一些属性。

    该配置文件的元素节点是有先后顺序的,如下

    configuration    配置
        properties        可以配置在Java属性配置文件中
        settings        修改MyBatis在运行时的行为方式
        typeAliases        为Java类型命名一个别名(简称)
        typeHandlers    类型处理器
        objectFactory    对象工厂
        plugins            插件
        environments    环境
            transactionManager    事务管理器
            dataSource            数据源
        mappers映射器

    其中,configuration元素是整个XML配置文件的根结点

    二、properties元素

    properties元素描述的都是外部化、可替代的属性。

    1、可通过外部指定的方式,即配置在典型的Java属性配置文件中,如database.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/smbms
    user=root
    password=123
    <properties resource="database.properties"/>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    2、直接配置为xml,并使用这些属性对配置项实现动态配置

    <properties>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms"/>
        <property name="user" value="root"/>
        <property name="password" value="123"/>
    </properties>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <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>

    若同时用了这两种方式,哪种方式优先呢?<property>子节点设置的值会先被读取,resource中的同名属性将会覆盖property子节点的值。所以resource属性值的优先级高于property子节点配置的值。

    三、settings元素

    setting元素的作用是设置一些非常重要的选项,用于设置和改变MyBatis运行中的行为,常用属性及值如下

    • cacheEnabled      对在此配置文件下的所有cache进行全局性开/关设置            可选值为true、false        默认值为true
    • lazyLoadingEnabled    全局性设置懒加载。如果设为false,则所有相关联的设置都会被初始化加载  可选值为true、false        默认值为true
    • autoMappingBehavior    MyBatis对于resultMap自动映射的匹配级别                 可选值为NONE、PARTIAL、FULL   默认值为PARTIAL

    四、typeAliases元素

    typeAliases元素的作用是配置类型别名,通过与mybatis的sql映射文件相关联,减少输入多余的完整类名,以简化操作。

    <?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>
        <typeAliases>
            <typeAlias type="edu.cn.pojo.User" alias="user"/>
            <typeAlias type="edu.cn.pojo.Provider" alias="provider"/>
        </typeAliases>
    </configuration> 

    这种写法的弊端在于,如果一个项目中有多个pojo,需要一一进行配置。有更加简化的写法,就是通过package的name属性直接指定包名,mybatis会自动扫描指定包下的javabean,并设置一个别名,默认名称为javabean的非限定类名

    <?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>
        <typeAliases>
            <package name="edu.cn.pojo"/>
        </typeAliases>
    </configuration>

    此时mapper中的写法如下,edu.cn.pojo.User的非限定类名为User

    <select id="getUserList" resultType="User">
      select * from smbms_user
    </select>

    另外,mybatis已经为许多常见的java基础数据类型内建了相应的类型别名,一般都与其映射类型一致,并且都是大小写不敏感的,比如映射的类型int、Boolean、String、Integer等,它们的别名就是int、Boolean、String、Integer。

    五、environments元素

    Mybatis可以配置多套运行环境,如开发环境、测试环境、生产环境,我们可以选择不同的配置,从而将SQL映射到不同的数据库环境上。不管几套运行环境,都必须明确选择出当前唯一的一个运行环境,这是因为每个数据库都对应一个SqlSessionFactory实例,需要指明哪个运行环境将被创建,并把运行环境中设置的参数传递给SqlSessionFactoryBuilder。

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <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、通过default属性来指定默认的运行环境,与某个id一致。id的命名要确保唯一

    2、transactionManager事务管理器,设置器类型为JDBC(MyBatis有两种事务管理类型,及JDBC和MANAGED),直接使用JDBC的提交和回滚功能,依赖于从数据源获得连接来管理事务的生命周期

    3、dataSource元素,使用标准的JDBC数据源接口来配置JDBC连接对象的资源。MyBatis提供了三种数据源类型(UNPOOLED、POOLED、JNDI),这里使用POOLED数据源类型。该类型利用“池”的概念将JDBC连接对象组织起来,减少了创建新的连接实例时所必需的初始化和认证时间,是MyBatis实现的简单的数据库连接池类型,它使数据库连接可被复用,不必在每次请求时都去创建一个物理连接。

    六、mappers元素

    mappers映射器用来定于SQL的映射语句,我们只需要告诉MyBatis去哪里找到这些SQL语句,即去哪里找相应的SQL映射文件,可以使用类资源路径或者URL等,如下

    <mappers>
        <mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
        <mapper resource="cn/smbms/dao/provider/ProviderMapper.xml"/>
    </mappers> 
    <mappers>
        <mapper resource="/Users/yanguobin/UserMapper.xml"/>
        <mapper resource="/Users/yanguobin/ProviderMapper.xml"/>
    </mappers>
  • 相关阅读:
    php获取OS信息
    坑爹的IE quirk模式
    [转]mysql privileges
    [转]VSFTPD的设置选项
    php性能分析工具xhprof
    php扩展安装
    又是万恶的IE....6
    ASP.NET操作文件(文件夹)简单生成html操作示例
    asp.net文件操作类
    c++/clr与c#的性能比较
  • 原文地址:https://www.cnblogs.com/yanguobin/p/11712334.html
Copyright © 2011-2022 走看看