一、配置文件结构

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>

掌握Mybatis的核心配置文件的更多相关文章

  1. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

  2. 03.MyBatis的核心配置文件SqlMapConfig.xml

    SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...

  3. MyBatis探究-----核心配置文件mybatis-config.xml中配置mappers的几种方式

    1.package name="映射文件所在包名" 必须保证接口名(例如IUserDao)和xml名(IUserDao.xml)相同,还必须在同一个包中 例如:<packag ...

  4. mybatis的核心配置文件

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC &q ...

  5. MyBatis基本要素---核心配置文件

    今天就简单的叙述下MyBatis的核心配置文件吧~~ configuration  配置 properties  可以配置在java属性配置文件中 settings   修改Mybatis在运行时的行 ...

  6. mybatis源码配置文件解析之一:解析properties标签

    mybatis作为日常开发的常用ORM框架,在开发中起着很重要的作用,了解其源码对日常的开发有很大的帮助.源码版本为:3-3.4.x,可执行到github进行下载. 从这篇文章开始逐一分析mybati ...

  7. mybatis源码配置文件解析之二:解析settings标签

    在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...

  8. mybatis源码配置文件解析之五:解析mappers标签

    在上篇博客中分析了plugins标签,<mybatis源码配置文件解析之四:解析plugins标签>,了解了其使用方式及背后的原理.现在来分析<mappers>标签. 一.概述 ...

  9. mybatis源码配置文件解析之四:解析plugins标签

    在前边的博客在分析了mybatis解析typeAliases标签,<mybatis源码配置文件解析之三:解析typeAliases标签>.下面来看解析plugins标签的过程. 一.概述 ...

随机推荐

  1. NOI 2017滚粗退役记

    NOI 2017 游记 又到了OIer退役了的季节 Day -1 今天是报到日. 中午11点多的动车.动车上和dick32165401和runzhe2000谈笑风生.顺便用dick32165401的流 ...

  2. react富文本编辑器

    首先安装两个插件 yarn add react-draft-wysiwyg draftjs-to-html --save 使用的代码如下 import React from 'react' impor ...

  3. HDU 5894 hannnnah_j’s Biological Test ——(组合数)

    思路来自于:http://blog.csdn.net/lzedo/article/details/52585170. 不过并不需要卢卡斯定理,直接组合数就可以了. 代码如下: #include < ...

  4. C与C++ 中 struct和typedef struct

    总体分两块 1 首先://注意在C和C++里不同在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:St ...

  5. C++入门经典-例8.7-多态,利用虚函数实现动态绑定

    1:多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统.在C++语言中,多态是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数,发出同样 ...

  6. Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”

      Ubuntu14.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit ...

  7. React 番外篇

    小技巧:如果我们想了解一门技术,不知道如何学习,那就在 BOSS 直聘上,来看看对这门技术的要求 这篇给大家讲的是 React 1.0 的初始版本,仅仅是让大家有个了解,毕竟回顾历史,我们才能找到他最 ...

  8. Linux搭建PHP环境(LAMP)

    //安装Apache的命令 # yum install httpd //启动Apache的命令 # service httpd start //安装MySQL的命令 # wget http://dev ...

  9. yum源问题

    配置本地yum源 1.使用工具将iso文件上传到操作系统,或者直接挂载iso文件 2.配置yum #cd /etc/yum.repos.d/ 删除多余的repo文件 # vi /etc/yum.rep ...

  10. leetcode常见算法与数据结构汇总

    leetcode刷题之后,很多问题老是记忆不深刻,因此特意开此帖: 一.对做过题目的总结: 二.对一些方法精妙未能领会透彻的代码汇总,进行时常学习: 三.总结面试笔试常见题目,并讨论最优解法及各种解法 ...