Mybatis的xml配置(mybatis-config.xml)精简笔记
老规矩,看着官方文档学
首先,我们需要知道的是,在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>
第二种是利用typeAliases
的package
属性配置整个包下的所有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种情况。其中使用相对于类路径的资源引用和将包内的映射器接口实现全部注册为映射器的方式使用较多。
- 使用相对于类路径的资源引用
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
</mappers>
这种方式就是单个的注册映射文件,通过项目下的全包名方式找打映射文件,注意包与下级包之间使用/
分开而不是.
。
- 将包内的映射器接口实现全部注册为映射器
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
这种方式注册映射器的形式typeAliases的package的形式是一样的,都是使得整个包下所有的XXXMapper.xml自动注册。
- 使用映射器接口实现类的完全限定类名
<mappers>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
- 使用完全限定资源定位符(URL)
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
Mybatis的xml配置(mybatis-config.xml)精简笔记的更多相关文章
- MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql
一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...
- MyBatis简介与配置MyBatis+Spring+MySql
MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL ...
- MyBatis(2):config.xml文件
前言 前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句.前者我把它命名为config.xml,config.xml的内容是: 1 ...
- 使用 XML 配置 MyBatis
构建 SqlSessionFactory 最常见的方式是基于 XML 配置(的构造方式).下面的 mybatis-config.xml 展示了一个 典型的 MyBatis 配置文件的样子: XML C ...
- 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置
项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...
- SpringMVC、SpringMVC XML配置(纯XML方式)
1.引入SrpingMVC所使用的Java包: cglib-nodep-2.1_3.jar.commons-logging.jar.spring-aspects-4.1.7.RELEASE.jar.s ...
- 一、MyBatis简介与配置MyBatis+Spring+MySql
//备注:该博客引自:http://limingnihao.iteye.com/blog/106076 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架 ...
- mybatis 学习二 MyBatis简介与配置MyBatis+Spring+MySql
1.2.2建立MySql数据库 在C:\Program Files\MySQL\MySQL Server 5.7\bin下面: 首先连接MySQL: mysql -u root -p ...
- web.xml配置DispatcherServlet (***-servlert.xml)
1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...
随机推荐
- java Doc的生成方式
Java Doc Javadoc命令是用来生产自己API文档的 参数信息 @author作者名 @version 版本号 @since 指明需要最早使用的JDK版本 @param参数名 @return ...
- Web入门
目录 Web入门 学习web路线 前端基础 三剑客的作用 BS架构 数据格式 HTTP协议 四大特性 数据格式 HTTP 状态码分类 状态码列表 案例:简易的BS架构 Web入门 什么是前端? 任何与 ...
- monowall
https://www.cat-home.org/?action=show&id=158
- [题解]UVA10026 Shoemaker's Problem
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- prometheus k8s服务发现
Prometheus的服务发现在解决什么问题? 被监控的目标(target)是整个监控体系中重要组成部分,传统监控系统zabbix通过 网络发现的机制自动创建主机到zabbix-server,进而快速 ...
- 【C# .Net GC】延迟模式 latencyMode 通过API-GC调优
延迟模式 lowlatency 使用环境:后台工作方式只影响第 2 代中的垃圾回收:第 0 代和第 1 代中的垃圾回收始终是非并发的,因为它们完成的速度很快.GC模式是针对进程配置的,进程运行期间不能 ...
- 【C# 线程】IntPtr 类
IntPtr类由来 .NET提供了一个结构体System.IntPtr专门用来代表句柄或指针.句柄是对象的标识符,当调用这些API创建对象时,它们并不直接返回指向对象的指针,而是会返回一个32位或64 ...
- Consul学习笔记(详细)
常见的注册中心: Netflix Eureka Alibaba Nacos HashiCorp Consul Apache Zookeeper CoreOS Etcd CNCF CoreDNS 介绍 ...
- 简明Python教程 - 学习笔记
1,第一步 cmd下运行python文件 :python 文件名.(在文件目录下) 退出python解释器:ctrl + z 或 exit() 回车 进入帮助模式:help(),退出:q 或 回车 2 ...
- 60天shell脚本计划-2/12-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年2月1日 --修改时间:2021年2月5日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在评 ...