老规矩,看着官方文档

首先,我们需要知道的是,在MyBatis 的xml配置文件中,这些影响 MyBatis 行为的属性之间的设置是有先后顺序的。配置的先后顺序依照properties, settings, typeAliases, typeHandlers, objectFactory, objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers进行排列。因为其中有部分是不常用的,这里只记录常用的几种,其他属性使用到了再添加吧。


1. properties

<properties>标签是在MyBatis配置文件中配置properties文件properties文件是一种属性文件,通过以key=value格式存储内容,Java中可以使用Properties类来读取这个文件。而在MyBatis配置文件中<properties>标签是通过引入properties文件来配置数据库连接信息。常用的properties文件配置数据库主要配置如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/*****?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=****

在MyBatis 的xml配置文件中,通过resource方式引入这个properties文件(如果这个properties文件在项目的resources目录下,则不需要全路径)。当然,<properties>标签内还有一个<property name="***" value="***"/>标签,这是也可以单独设置某个键值。简单的讲,就是可以在properties文件中设定某个键值,另外也可以在<properties>标签内加入一个键值;也可以同时在这两个地方设置同一个键值。

<properties resource="org/mybatis/example/config.properties">
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>

虽然可以在properties文件和标签中同时设置,但是他们之间的优先级是不一样的。另外,根据官网我们可以知道也可以通过在 SqlSessionFactoryBuilder.build() 方法中传入属性值来进行设置。如果一个属性在不只一个地方进行了配置,那么,MyBatis 将先读取在 properties 元素体内指定的属性,再根据 properties 元素中的 resource 属性读取类路径下属性文件。最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。

已经有了上述方法来获得数据库连接信息,那么接下应该怎样去使用这些数据呢?———这些数据将会被用于配置MyBatis的environments属性。总结以下:

2. environments

MyBatis 可以配置成适应多种环境,比如开发和测试测试可以配置不同的环境;environments的配置包含若干个environment元素;通过default属性设置默认的环境,这里添加的参数为某一个environment的id。<environment>的配置由<transactionManager >dataSource 两个元素组成。transactionManager 是指事务管理器,在 MyBatis 中有两种类型的事务管理器(也就是 type=[JDBC|MANAGED];dataSource 是指数据源,有三种内建的数据源类型(也就是 type=[UNPOOLED|POOLED|JNDI]);

JDBC 和 MANAGED 区别:

JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。

MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期

如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

UNPOOLED|POOLED|JNDI的区别

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。也就是不设置数据池

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来

JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用

看似environment元素配置很繁琐,但是一般在使用中按如下方式配置就行了,其他需求参考官方文档即可。

<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</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 元素就是用于配置数据库的连接信息,用到了properties元素中的driver、url、username、password值。通过value=${}的形式获取到这个值。

3. typeAliases

类型别名可为Java类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。比如我的User类,每次都在使用时写长长的一条包名。先来对比一下使用别名和不使用别名的区别吧。

<!--使用别名-->
<select id="getUserList" resultType="user">
select * from mybatis.user
</select>
<!--不使用别名-->
<select id="getUserList" resultType="com.th.pojo.User">
select * from mybatis.user
</select>

可以明显的对比说明别名确实很让代码更加简单。

有3种方式设置别名,第一可以通过typeAliases标签的typeAlias属性配置单个Java类型的别名。

<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
</typeAliases>

第二种是利用typeAliasespackage 属性配置整个包下的所有Java类型的别名;通过配置整个包的别名,MyBatis 会在包名下面搜索需要的 Java Bean,会使用 Bean 的首字母小写的非限定类名来作为它的别名。当然前提条件是没有通过注解设置别名的情况下。

<typeAliases>
<package name="domain.blog"/>
</typeAliases>

第三种是通过给一个Java Bean添加一个注解@Alias("别名"),从而实现设置别名。这个注解是MyBatis的import org.apache.ibatis.type.Alias;切记不是其他包下的注解。需要注意的是,使用了注解的方式,那么所有使用了别名的地方都要使用这个注解设置的别名。

至于一些为常见的 Java 类型内建的类型别名,可以通过官方文档进行查询。

4. settings

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。但是现在我们并不需掌握太多。着重记住以下几条就好。



5. mappers

mapper用于SQL 映射。对于mapper我们早就不陌生了,在入门的时候我们就遇到了。MyBatis 的配置文件,也就是我们说的mybatis-config.xml文件就相当于整个MyBatis项目的总管家。当需要需要进行查询的时候首先是调用Dao层的接口方法,而接口中的方法只是定义,而没有实际操作;真正的SQL语句是在XXXMapper.xml文件中。很显然,我们需要把这个接口跟XXXMapper.xml对应起来。这时你可能会觉得这不是通过XXXMapper.xml文件的命名空间进行确定的嘛。这也没错,通过命名空间与这个接口绑定了,通过id属性与接口中的方法进行绑定。而配置文件的<mappers>标签,就是讲所有的XXXMapper.xml文件进行注册,使得所有XXXMapper.xml文件都具有与接口进行绑定的属性,而这些配置会告诉 MyBatis 去哪里找映射文件。只有这个总管家“备案”了,这个XXXMapper.xml文件才能合法正常地被使用。mappers地配置有以下4种情况。其中使用相对于类路径的资源引用和将包内的映射器接口实现全部注册为映射器的方式使用较多。

  1. 使用相对于类路径的资源引用
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
</mappers>

这种方式就是单个的注册映射文件,通过项目下的全包名方式找打映射文件,注意包与下级包之间使用/分开而不是.

  1. 将包内的映射器接口实现全部注册为映射器
<mappers>
<package name="org.mybatis.builder"/>
</mappers>

这种方式注册映射器的形式typeAliases的package的形式是一样的,都是使得整个包下所有的XXXMapper.xml自动注册。

  1. 使用映射器接口实现类的完全限定类名
<mappers>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
  1. 使用完全限定资源定位符(URL)
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>

Mybatis的xml配置(mybatis-config.xml)精简笔记的更多相关文章

  1. MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql

    一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...

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

    目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...

  3. MyBatis简介与配置MyBatis+Spring+MySql

    MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL ...

  4. MyBatis(2):config.xml文件

    前言 前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句.前者我把它命名为config.xml,config.xml的内容是: 1 ...

  5. 使用 XML 配置 MyBatis

    构建 SqlSessionFactory 最常见的方式是基于 XML 配置(的构造方式).下面的 mybatis-config.xml 展示了一个 典型的 MyBatis 配置文件的样子: XML C ...

  6. 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置

     项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...

  7. SpringMVC、SpringMVC XML配置(纯XML方式)

    1.引入SrpingMVC所使用的Java包: cglib-nodep-2.1_3.jar.commons-logging.jar.spring-aspects-4.1.7.RELEASE.jar.s ...

  8. 一、MyBatis简介与配置MyBatis+Spring+MySql

    //备注:该博客引自:http://limingnihao.iteye.com/blog/106076 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架 ...

  9. mybatis 学习二 MyBatis简介与配置MyBatis+Spring+MySql

    1.2.2建立MySql数据库 在C:\Program Files\MySQL\MySQL Server 5.7\bin下面: 首先连接MySQL:        mysql  -u root -p ...

  10. web.xml配置DispatcherServlet (***-servlert.xml)

    1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...

随机推荐

  1. MXNet源码分析 | KVStore进程内通信

    本文主要基于MXNet1.6.0版本进行分析. MXNet的KVStore模块下有几个比较重要的类.KVStore是一个抽象类,提供了一些通用的API,例如Init.Push和Pull等.因为KVSo ...

  2. Django视图与模板(6)

    前面记到数据库与模型(models)有联系,现在记录一下视图与模板,他们两个也有联系. 个人理解:视图就好像一个cpu,比较核心,就是用来处理问题的,又叫业务逻辑处理,他把处理完的结果插入到模板里面, ...

  3. 渗透测试工具篇之目录扫描工具dirmap

    (一)dirmap介绍 一个高级web目录扫描工具,功能将会强于DirBuster.Dirsearch.cansina.御剑 (二)dirmap安装 打开浏览器输入https://github.com ...

  4. Delegate 委托细说

    目录 委托的申明 委托的赋值 委托实例方法的使用C#Invoke\BeginInvoke\Endinoke  系统自带的委托Action.Action<T>.Func<T>.P ...

  5. C#基础之Foreach

    下面是Foreach的介绍. 如何让一个类可以用Foreach来遍历呢. 结论:让这个类实现IEnumerable接口. 这个类有一个public的GetEnumerator的实例方法,并且返回类型中 ...

  6. Java:Path与Paths

    0.说明 用于读Path操作的接口(Path)与实现类(Paths) 1.模块:java.nio.file.Path.java.nio.file.Paths 2.方法 2.1.Paths 只有两个静态 ...

  7. linux添加串口权限

    通过添加到用户组的方式实现1.由于tty属于"dialout"组别,比如你的用户名是blue, 先命令查看下用户隶属的组别 groups blue 2.如果没有隶属"di ...

  8. 对element-ui的table组件的二次封装

    首先,使用过element-ui的table组建的同学都知道,每次使用的时候表头字段都要一个一个的去写,写起来很麻烦,既不美观又浪费时间,基于以上原因,对table组件进行二次封装,使我们在使用的时候 ...

  9. Mock平台2-Java Spring Boot框架基础知识

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 认识Spring Boot 在N年前的大学时代想要开发一个Web服务使用的还是SSH框架(struts+spring+hibernate) ...

  10. GateWay配置使用

    是什么 Cloud全家桶中有个很重要的组建就是网关,在1.x版本中都是采用的Zuul网关 但在2.X版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul Sprin ...