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 ...
随机推荐
- uniapp 微信发送订阅消息
这篇主要针对小程序进行演示,既然是发送消息,那么就有三个问题.发送什么内容,给谁发送,怎么发送!往下一条一条解决. 发送什么消息内容 - 通过微信公众号平台 选择对应的消息模板 选择以后在我的模板里面 ...
- CentOS8系统上Zookeeper安装启动
下载Zookeeper安装包,下载地址为:https://zookeeper.apache.org/releases.html.注意选择bin的gz包,否则安装不成功,提示找不到相应的类. 一.单机模 ...
- 『无为则无心』Python面向对象 — 46、类和对象
目录 1.理解类和对象 2.类 3.对象 4.Python中的对象 5.类和对象的定义 (1)定义类 (2)创建对象 (3)练习 6.拓展:isinstance() 函数 1.理解类和对象 (1)类和 ...
- log4j、logback日志框架与统一接口slf4j说明
log4j 传入日志框架,老项目中使用较多. 日志级别 根日志级别 log4j.rootLogger=info 默认日志级别,设置后对于没有设置子级别的日志输出都走这个默认值. 子类日志级别 log4 ...
- 前端生成PDF,让后端刮目相看
PDF 简介 PDF 全称Portable Document Format (PDF)(便携文档格式),该格式的显示与操作系统.分辨率.设备等因素没有关系,不论是在Windows,Unix还是在苹果公 ...
- 记一次慢查询优化sql
sql语句优化(慢查询日志) 最近,旧系统向新系统迁移工程刚刚结束.开发完成后,测试阶段也是好好休息了一把.接到一个需求,由于内部员工使用的网站部分功能加载时间很长,所以需要去优化系统的一些功能.大致 ...
- IC应届生40万白菜价!从业多年的资深专家手把手指导你如何选择offer!
这是IC男奋斗史的第1篇原创 关注公众号[IC男奋斗史],让我们一起撸起袖子加油干! 芯片行业2021年的秋招市场又是风起云涌.高手过招,继OPPO给应届生开出40万白菜价offer之后,平头哥又被爆 ...
- [题解]第十一届北航程序设计竞赛预赛——H.高中数学题
题目描述 解题思路 可以求得通项公式:an = 2n + 1,所以问题就变成等差数列求异或和,这个具体为什么对我还不能很好地解释清楚,先挖坑吧. 附:c++代码 1 #include <iost ...
- docker学习笔记(3)——联合文件系统与数据卷
参考资料: 1.官网教程:https://docs.docker.com/reference/ 2.视频教程:https://www.bilibili.com/video/BV1og4y1q7M4?t ...
- Chapter09 项目
Chapter09 项目 房屋出租系统(面向对象中级) 9.1 房屋出租系统-需求 9.1.1项目需求说明 实现基于文本界面的<房屋出租软件>. 能够实现对房屋信息的添加.修改和删除(用数 ...