MyBatis的配置文件属性

Mybatis配置文件的文件结构如下代码所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties/>        <!--配置--><settings/>        <!--设置--><typeAliases/> <!--类型别名--><typeHandler/>   <!--类型处理器--><objectFactory/>    <!--对象工厂--><plugins/>       <!--插件--><environments> <!--配置环境--><environment>    <!--环境变量--><transactionManager/>        <!--事务管理器--><dataSource/>               <!--数据源--></environment></environments><databaseIdProvider/>        <!--数据库厂商标识--><mappers>         <!--映射器-->
</configuration>

(一)properties元素

properties是一个配置属性的元素,可以用来从外部加载属性文件,例如Mybatis学习1中的数据源的配置信息,便是从db.properties属性配置文件中加载进来的,同时也可以在Mybatis配置文件内部通过properties元素配置数据源的属性,如下:

<properties><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="123456"/>
</properties>

上述配置可以使我们在上下文中使用已经配置好的属性,然后我们在数据源中使用上述配置信息,代码如下所示:

<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/>
</dataSource>

如此我们就将数据源信息配置完成了。
同样的我们还有另外一种方式,同过使用properties配置文件获取数据源属性,在项目的src目录下添加一个db.properties配置文件,配置文件中的配置信息为如下所示:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1234

只需在mybatis配置文件中添加如下代码即可:

<properties resource="db.properties" />

这两种配置方式可以混合使用,但是并不建议混合使用,这样会使得管理变得混乱,推荐使用properties配置文件。

(二)settings(设置)

settings在mybatis中的配置是最复杂的,但也是最重要的配置内容之一,当然即使我们不配置它,mybatis也能够正常运行,Mybatis配置内容请参考官方文档,暂时了解即可,一个完整settings配置的代码如下:

<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

(三)typeAliases(别名)

此配置可以使用,也可以不使用,通过对某个类设置别名,可以书写别名作为类型,例如下述所示:

<typeAliases><typeAlias alias="user" type="com.muke.User"/>
</typeAliases>

当需要引用User类时,显然它的名字较长,我们可以使用它的别名,即user,它就代表了User类。系统定义的相关别名请参考官方文档包括基本数据类型,包装器类型,集合类型等等。
上述代码为自定义别名,因为系统所给别名往往是不够使用的,我们需要为我们自己创建的一些类型定义别名,我们使用别名来代替全路径名(包名+类名),其目的是为了减少配置的复杂度。
同过自动扫描包的形式定义别名,首先定义需要扫描的包:

<typeAliases><package name="com.muke.pojo"/>
</typeAliases>

然后在我们需要定义别名的类上面使用@Alias注解,如下:

@Alias("user")
public class User{private int id;//...
}

如上两段代码,表示扫描com.muke.pojo包下的User类,定义其别名为user,另外也可以不写注解,此时也会定义别名,会将其类名的第一个字母改为小写。

(四)typeHandler(类型处理器)

Mybatis在预处理语句(PreparedStatement)中设置一个参数时,或者从结果集取出一个参数时,都会使用注册了typeHandler的处理器进行处理。
typeHandler与typeAliases一样分为系统定义的处理器和自定义处理器,typeHandler的常用配置为Java类型(javaType),JDBC类型(jdbcType),类型处理器的作用就是从数据库中将jdbcType转换为javaType和将参数从javaType转换为jdbcType,请参考官方文档.

(五)objectFactory(对象工厂)

当Mybatis在构建一个结果返回时,都会使用objectFactory去构建pojo,可以自定义对象工厂,但通常我们使用默认的对象工厂,这里不做过多讲述,可以参考官方文档,注意,大部分情况下,我们无需自己配置objectFactory,使用系统默认即可。

(六)plugins(插件)

插件比较复杂,当我们了解过mybatis运行的原理后再去学习它,而且在开始学习Mybatis时也暂时用不上,后续学习可以慢慢去了解。

(七)environments(配置环境)

默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。 比如default=“development” id=“development”。
事务管理器(transactionManager)
配置环境中,我们前面已经了解过一个了,配置数据源,我们首先了解一下,另外一个,事务管理器,在Mybatis中有两种事务管理器。
JDBC:采用JDBC管理事务,这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
MANAGED:采用容器方式管理事务,在JNDI数据源中常用;
提示 如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

<transactionManager type="JDBC"/>

数据源(dataSource)
Mybatis为我们提供了三种数据源实现方式。
UNPOOLED:这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形;
POOLED:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求;
JNDI:这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用;

<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/>
</dataSource>

使用DBCP数据源需要我们提供一个类去配置它,如下配置:

<dataSource type="xx.xx.DbcpDataSourceFactory" >

(八)databaseIdProvider(数据库厂商标识)

在实际应用中,使用的比较少,了解即可,Mybatis提供默认配置规则为:

<databaseIdProvider type="DB_VENDOR"><property name="SQL Server" value="sqlserver"/><property name="DB2" value="db2"/><property name="Oracle" value="oracle" /><property name="MySQL" value="mysql" />
</databaseIdProvider>

(九)mappers(映射器)

MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。例如:

<!-- 使用相对于类路径的资源引用 -->
<mappers><mapper resource="com/muke/mybatis/userMapper.xml"/><mapper resource="com/muke/mybatis/bookMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers><mapper url="file:///var/mappers/userMapper.xml"/><mapper url="file:///var/mappers/bookMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers><mapper class="com.muke.mapper.UserMapper"/><mapper class="com.muke.mapper.BookMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers><package name="com.muke.mapper"/>
</mappers>

参考MyBatis中文文档

Mybatis学习3之配置相关推荐

  1. Mybatis学习之配置优化

    前言 接上章学习,我们配置build了之后,成功解决了资源导出失败的问题,这章我们学习的是配置优化 一.原来的配置 1.数据库配置(属性优化) 原先写死的数据库核心配置 <!--核心配置文件-- ...

  2. Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作

    1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...

  3. MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql .

    引用:http://blog.csdn.net/milife2012/article/details/7253647 分类: mybatis 2012-02-13 01:20 58人阅读 评论(0)收 ...

  4. 事务中mybatis通过id查不到但是通过其他条件可以查到_40打卡 MyBatis 学习

    第57次(mybatis) 学习主题:mybatis 学习目标: 1 掌握框架的概念 2 掌握mybatis环境搭建 对应视频: http://www.itbaizhan.cn/course/id/8 ...

  5. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  6. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  7. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

  8. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  9. Mybatis学习总结二

    Mybatis学习总结二 0.不需要修改的文件(在src下面) jdbc.properties文件 log4j.properties文件 SqlMapConfig.xml文件 1.高级结果映射 1.1 ...

最新文章

  1. Could not initialize class org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImplKt
  2. 利用OpenCV+ConvNets检测几何图形
  3. C++STL的map/ multimap容器
  4. 数据结构与算法:排序算法的稳定性以及各性能比较python实现
  5. 数据仓库和数据集市 专业术语解释
  6. .so文件反编译_java加密防止反编译-VirboxProtector
  7. 41.字符串函数(三)
  8. jdk8 源码 比较器
  9. 累斗累---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十)
  10. DSA——直接插入排序笔记
  11. c#生成随机彩色验证码例子
  12. Android学习4—短信发送器的实现
  13. android 消息循环滚动条,Android 电池电量进度条,上下滚动图片的进度条(battery)...
  14. 一、对文本文件进行数据粒度转换,即将文本文件personnel_data.txt中字段household_register的数据统一成省份,并且输出到文本文档personnel_data_new.tx
  15. 智能客服搭建(3) - MRCP Server 与 FreeSWITCH 对接
  16. 阿里云ECS服务器环境搭建(2) —— ubuntu 16.04 安装中文输入法(搜狗输入法)
  17. 利用adb设置安卓http代理
  18. 2015美国大学计算机科学专业排名,2015年US News美国大学计算机专业排名
  19. 让机器认知中文实体 — 复旦大学知识工场发布中文实体识别与链接服务
  20. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Standard NLP tasks with specific vocabulary

热门文章

  1. 将性价比进行到底,realme真我Q2锁定双11口碑爆款之王
  2. 大星星学物联网概览篇-开发板
  3. 议程公布|第四届中国国际大数据大会总议程曝光!
  4. 我比较欣赏的歌词集锦
  5. 男人们实用的:电脑族的护肤秘籍
  6. 银行信用卡客户忠诚度积分营销系统
  7. C: warning C275: expression with possibly no effect
  8. 在Linux下用tftp刷写路由器固件
  9. 阿里云盘万能邀请码,某盘彻底慌了(每天更新~)
  10. 放过机器人吧!人类真正需要担忧的是人工智能