一、配置文件结构

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. IntelliJ IDEA工具增加test测试方法,报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误

    是因为我在IntelliJ IDEA中,通过plugins增加 插件的时候,在 增加的测试类是junit4.12,改版本的jar包不再包含hamcrest-library.jar .我是通过将自己的项 ...

  2. 从输入url到页面加载完成都发生了什么

    https://zhuanlan.zhihu.com/p/23155051 参考 一个http请求的过程 简要介绍一下一个http请求的网络传输过程: DNS Lookup先获得URL对应的IP地址( ...

  3. LeetCode 88. 合并两个有序数组(Merge Sorted Array)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  4. 【黑马Javaweb】1.1Junit单元测试

    黑马第一天学习 今日内容 Junit单元测试: 测试分类: Junit使用:白盒测试 今日内容 1.1Junit单元测试 1.2.反射 1.3.注解 Junit单元测试: 测试分类: 1.黑盒测试:不 ...

  5. MAMP 环境下安装Redis扩展

    1. 下载对应版本的 php 源码,(当前使用版本是 php5.6.30 )版本号最后一位有点区别不影响链接:http://php.net/get/php-5.6.31.tar.bz2/from/a/ ...

  6. jdk git maven Jenkins的配置

    前言 搭建Jenkins的笔记. JDK 1.  jdk 下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-down ...

  7. Linux上安装Python3

    1. 安装支持包 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel ope ...

  8. ubuntu下编译linux内核之前需要做哪些准备?

    答: 安装必要的工具(笔者使用的ubuntu代号为bionic) sudo apt-get install -y bison flex

  9. SVN+MAVEN项目打包

    题记:项目打包bash脚本 环境准备 maven版本:3.5.2 mvn -v #查看maven的版本信息 svn版本:1.4.0 svn --version #查看svn版本信息 1.update_ ...

  10. AngularJS unit test report / coverage report

    参考来源: http://www.cnblogs.com/vipyoumay/p/5331787.html 这篇是学习基于Angularjs的nodejs平台的单元测试报告和覆盖率报告.用到的都是现有 ...