一、配置文件结构

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. POI2012 BEZ-Minimalist Security | noi.ac #537 Graph

    题目链接:戳我 首先注意这张图有可能不连通!! 然后我们考虑对于每一个联通块,首先任意确定一个点,给它设最终值为x,然后进行搜索.(因为对于一个联通块而言,我们知道一个点的最终值,那么整个联通块上面点 ...

  2. Spring——MyBatis整合

    一.xml配置版 1.导入依赖 <!--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.myb ...

  3. [JOI2012春季合宿]Rotate (链表)

    题意 题解 又是一道神仙题-- 显然的做法是大力splay,时间复杂度\(O((N+Q)N\log N)\), 可以卡掉. 正解: 使用十字链表维护矩阵,在周围增加第\(0\)行/列和第\((n+1) ...

  4. springboot 2.2.0 SNAPSHOT 解决 repositories.repository.id must be unique 的问题

    如果打包 jar 也报错了 ,那也是这个的原因,注释掉即可 <!-- 这个仓库必须注释掉 否则打包 war 的时候 , 会报错 'repositories.repository.id' must ...

  5. koa 基础(七)错误处理中间件

    1.错误处理中间件 app.js /** * 错误处理中间件 */ // 引入模块 const Koa = require('koa'); const router = require('koa-ro ...

  6. StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法

    这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...

  7. Copy-On-Write in Swift

    Premature optimisation is the root of all evil. But, there are moments where we need to optimise our ...

  8. Cortex-M3 异常返回值EXC_RETURN

    [EXC_RETURN] 在进入异常服务程序后,硬件自动更新LR的值为特殊的EXC_RETURN.当程序从异常服务程序返回,把这个EXC_RETURN值送往PC时,就会启动处理器的异常中断返回序列.因 ...

  9. [Python]切换工作目录|python将目录切换为脚本所在目录

    Python使用os.chdir命令切换python工作目录 代码示例: In []: import os In []: os.system("pwd") /home/wangju ...

  10. Ceph 的用户管理与认证

    目录 文章目录 目录 前言 Ceph 的用户管理 用户管理常规操作 CephX 认证系统 身份认证原理 使用 ceph-authtool 进行密钥环管理 注意事项 前言 常规的身份认证系统无非三点: ...