02、MyBatis XML 全局配置文件
MyBatis-全局配置文件
在MyBatis中全局配置文件有着重要的地位,里面有9类行为信息;如果我们要想将MyBatis运用的熟练,配置全局配置文件是必不可少的步骤,所以我们一定要啃下这一块硬骨头。该文章是结合MyBatis配置文件网页加个人理解做的笔记,如果有的地方写的不够好或者有错误。恳请大家多多给我指出,因为我也是在摸索中进步。下面将对9大行为信息和属性信息配置进行解释.
1. MyBatis配置
注:MyBatis的标签是有顺序的,如果不按照顺序会出现The content of element type "configuration" must match 错误.标签的顺序为:
在Eclipse中引入XML的dtd约束文件,方便编写XML的时候有提示
1)属性(properties)
(1)dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root123
(2)properties属性
<!-- properties:引入外部properties配置文件的内容 -->
<!-- url:引入网络路径或者磁盘路径下的资源 -->
<!-- resource:引入类路径下的资源 -->
<properties resource="dbconfig.properties" ></properties>
(3)使用properties配置mybatis-config.xml
<!-- properties:引入外部properties配置文件的内容 -->
<!-- url:引入网络路径或者磁盘路径下的资源 -->
<!-- resource:引入类路径下的资源 -->
<properties resource="dbconfig.properties" ></properties> <environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
2)设置(settings) (1)mapUnderscoreToCamelCase
<!-- settings:包含很多设置项 -->
<!-- setting:用来选择设置中各项设置 -->
<!-- name:设置项名 -->
<!-- value:设置项取值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
3)类型别名(typeAliases)
注意:MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。
我们目前最新的mybatis推荐使用全限定类名书写。
<!-- typeAliases:别名处理器,可以为java类型起别名.别名不区分大小写 emp 和 Emp是一样的 -->
<!-- typeAlias:为java类型起别名 -->
<!-- type:指定要起别名的类型全类名;默认别名就是类名小写 -->
<!-- alias:指定新的别名 -->
<!-- package:指定一个包名,为该包下所有类批量起别名 -->
<!-- 批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 如:@Alias("empp") 起别名为empp-->
<typeAliases>
<!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> -->
<package name="com.atguigu.mybatis.bean" />
</typeAliases>
4)类型处理器(typeHandlers)
无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。
• 日期和时间的处理,JDK1.8以前一直是个头疼的问题。我们通常使用JSR310规范领导者Stephen Colebourne创建的Joda-Time来操作。1.8已经实现全部的JSR310规范了。
• 日期时间处理上,我们可以使用MyBatis基于JSR310(Date and Time API)编写的各种日期时间类型处理器。
• MyBatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的
5)对象工厂(objectFactory)
6)插件(plugins)
插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。
7)环境配置(environments)
<!-- environments:配置多种环境;default标签可以指定使用的环境,可以达到快速切换环境的效果 -->
<!-- environment 配置一个具体的环境信息;id代表当前环境的唯一标识;必须有两个标签transactionManager/type -->
<!-- transactionManager:事务管理器 -->
<!-- type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)|自定义事务管理器(实现TransactionFactory接口.type指定为全类名) -->
<!-- JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围 -->
<!-- MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文) -->
<!-- 自定义:实现TransactionFactory接口,type=全类名/别名 -->
<!-- dataSource:数据源 -->
<!-- type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)|自定义数据源(实现DataSourceFactory接口,type是全类名) -->
<!-- UNPOOLED:不使用连接池 -->
<!-- POOLED:使用连接池 -->
<!-- JNDI: 在EJB 或应用服务器这类容器中查找指定的数据源 -->
<!-- 自定义:实现DataSourceFactory接口,定义数据源的获取方式 -->
<!-- 实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置 -->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment> <environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
8)数据库厂商标识(databaseIdProvider)
MyBatis 可以根据不同的数据库厂商执行不同的语句.
(1)添加select
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" >
select * from tbl_employee where id = #{id}
</select> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="mysql" >
select id,email from tbl_employee where id = #{id}
</select> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="oracle">
select * from tbl_employee where id = #{id}
</select>
(2)添加databaseIdProvider
<!-- databaseIdProvider:持多数据库厂商 -->
<!-- type="DB_VENDOR":VendorDatabaseIdProvider -->
<!-- type:得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql -->
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
(3)配置properties(数据库链接信息)
#Mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root123 #Oracle
orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123456
(4)配置environments
<environments default="dev_mysql">
<environment id="dev_mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment> <environment id="dev_oracle">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${orcl.driver}" />
<property name="url" value="${orcl.url}" />
<property name="username" value="${orcl.username}" />
<property name="password" value="${orcl.password}" />
</dataSource>
</environment>
</environments>
9)映射器(mappers)
(1)mybatis-config.xml
<!-- !!!!!!!!!非常重要!!!!!!!!!!!! -->
<!-- 将我们写好的sql映射文件<EmployeeMapper.xml>一定要注册到全局配置文件中 -->
<!-- mappers:将sql映射注册到全局配置中 -->
<!-- mapper:注册一个sql映射 -->
<!-- resource(使用相对于类路径的资源引用):引用类路径下的sql映射文件 org/mybatis/builder/AuthorMapper.xml-->
<!-- url(使用完全限定资源定位符):引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml -->
<!-- class(使用映射器接口实现类的完全限定类名):引用(注册)接口 org.mybatis.builder.AuthorMapper -->
<!-- 存在sql映射文件:映射文件名必须和接口同名,需配置文件与接口文件同一目录下(com.atguigu.mybatis.dao.EmployeeMapper.java)和(com.atguigu.mybatis.dao.EmployeeMapper.xml -->
<!-- 不存在sql映射文件:所有的sql都是利用注解写在接口上(com.atguigu.mybatis.dao.EmployeeMapperAnnotation) -->
<!-- package:批量注册sql映射 -->
<mappers>
<!-- <mapper resource="com/batis/mapper/EmployeeMapper.xml" /> -->
<!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->
<package name="com.atguigu.mybatis.dao"/>
</mappers>
(2)select注解
public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}
参考文档:https://mybatis.org/mybatis-3/zh/configuration.html
02、MyBatis XML 全局配置文件的更多相关文章
- [02] mybatis-config.xml 全局配置文件解析
本篇会摘录mybatis全局配置文件中比较常见常用的一些配置进行说明,其实官方文档已经写得足够清晰了(关键是还有中文版完全不慌),此处记录重要还是作为个人的巩固记录. 1.properties 在全局 ...
- SqlMapConfig.xml全局配置文件介绍——(四)
----------mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:----------- properties(属性) settings(全局配置参数) typeAlia ...
- 由浅入深---MyBatis的全局配置文件
从我开始接触代码,我就很怕写配置文件,一般的配置文件我都是直接从上一个项目复制到这个项目来改改,可能有部分同学也有我这种痛吧: 我目前一般的做法,先去找找例子(从网上,从github,从官网)之后再改 ...
- Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...
- Mybatis笔记五:Mybatis的全局配置文件Configuration.xml讲解
从 XML 中构建 SqlSessionFactory 每个基于Mybatis应用都是以一个SqlSessionFactory实例为中心.SqlSessionFactory实例可以由SqlSessio ...
- Mybatis的全局配置文件标签介绍(mybatis-config.xml)
全局配置文件中本人只记录了常用的几个 typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, dat ...
- MyBatis(2)-全局配置文件
本文的代码是在MyBatis(1)-简单入门基础之上进行学习的,如有不懂请先看此博文MyBatis(1)-简单入门! 1)配置文件的安装 --->在联网的情况下,点击去下载http://myba ...
- Mybatis(二) 全局配置文件详解
这节来说说全局配置文件的东西,非常简单.看一遍就懂了. --WH 一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.prop ...
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器 ...
随机推荐
- linux(centos8):sed命令的应用例子
一,sed命令的用途 sed是Linux下一款功能强大的非交互流式文本编辑器, 可以对文本文件进行增.删.改.查等操作, 支持按行.按字段.按正则匹配文本内容. 说明:刘宏缔的架构森林是一个专注架构的 ...
- C# 8: 默认接口方法
翻译自 John Demetriou 2018年8月4日 的文章 <C# 8: Default Interface Methods>[1],补充了一些内容 C# 8 之前 今天我们来聊一聊 ...
- 1.1 Python 概述
1.1 Python 概述 1.1.1 了解Python Python 是由荷兰人 Guido Van Rossum 发明的一种面向对象的解释型高级编程语言.Python的设计哲学为 优雅.明确和简单 ...
- java: 非法字符: '\ufeff'
错误问题记录: Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 1) 错误: 需要class, interface或enum报错 问题发生时因为编码问题导致,如 ...
- .Net Core实现基于Quart.Net的任务管理
前段时间给公司项目升级.net框架,把原先的任务管理平台用.net core实现,现做如下整理: 一.实现思路 之前的实现也是参考了博客园中其他文章实现的思路: 一个任务定义一个实现IJob接口的类, ...
- java默认值
注意:此处默认值是在类成员时才可以被初始化有默认值 如果时在局部变量中,必须先自己初始化才可以使用,否则编译失败
- 关于“Cannot resolve table 'user'”报错的问题解决
springboot+vue建立映射时,后端引用@Table(name="user") 来对应表名 user,但引用后报错"Cannot resolve table 'u ...
- 使用 k8s 搭建 confluence 6.10.x 版本
将公司中已有的 confluence 服务迁移到 k8s 集群中,需要保留当前已有的数据.整体需要分为如下几个步骤: 备份 mysql 数据 备份 confluence 安装目录 备份 conflue ...
- 在国内使用Google验证码reCaptcha
如今各大网站都不可缺少的一部分就是验证码,验证码具有防止恶意批量操作,保护账户安全等作用.但是现在各种暴力破解验证码的手段层出不穷,验证码的保护也就失去了意义.所以各大平台为了应对这种情况也是使用类似 ...
- 二叉树、平衡二叉树、B-Tree、B+Tree 说明
背景 一般说MySQL的索引,都清楚其索引主要以B+树为主,此外还有Hash.RTree.FullText.本文简要说明一下MySQL的B+Tree索引,以及和其相关的二叉树.平衡二叉树.B-Tree ...