Mybatis——xml配置
注:该文档参考了
- https://mybatis.org/mybatis-3/zh/configuration.html
- 狂神的视频:https://www.bilibili.com/video/BV1NE411Q7Nx?p=17
一.配置属性(properties)
目标:解耦
- 直接在mybatis-config.xml配置
<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属性配置
<properties resource="db.properties">
<property name="username" value="username"/>
<property name="password" value="password"/>
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/dailyClick-test?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
- 使用配置文件位置
(1).在resources目录下建立一个配置文件目录:config.properties
username=username
password=password
(2).在mybatis-config.xml中将config.properties中的内容引入,同时改换占位符
<properties resource="db.properties">
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://47.100.90.132:3306/dailyClick-test?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
注:
- 在xml中,所有的标签都可以规定其顺序
#{}多应用于sql语句,也是应用于spring的xml配置和注解配置中统一的SpEL表达式语法结构.${}多应用于配置文件中(如:xml),是属性占位符,配合spring的property-placeholder和.property文件使用,将spring中的配置信息提取到文件中,方便修改,其功能完全可用#{}代替,但${}更简单不易错
加载顺序:
- 首先读取在 properties 元素体内指定的属性。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性
- 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性
二.设置(settings):
这里挑选几个重要的setting
- cacheEnabled(true | false):全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。
- lazyLoadingEnabled(true | false):懒加载.延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。简单来说,就是什么时候用,什么时候加载
- mapUnderscoreToCamelCase(true | false):是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。
- logImpl(SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING):指定 MyBatis 所用日志的具体实现,未指定时将自动查找。
配置方式
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
三.类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写.
java的基础数据数据类型和基础类都几乎有别名,如:int->_int(注意这里八大基础类型都有"_"前缀),Map->map
- 通过typeAlias属性配置
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
</typeAliases>
注:这里需要定位到相关的Bean类
- 通过package属性配置
<typeAliases>
<package name="domain.blog"/>
</typeAliases>
非限定(non-qualified)类名:也叫短名,就是我们平时说的类名,不带包的
注:这里默认会使用 Bean 的首字母小写的非限定类名来作为它的别名
3.通过package属性+注解配置
@Alias("author")
public class Author {
...
}
总结:
(1). 当实体类较少时,使用第一种方式,可以起别名
(2). 如果实体类较多,且不用起别名,可以用第二种方式
(3). 如果实体类较多,且需要起别名,可以用第三种方式,但注意随意的加注解会降低程序的可阅读性
四.环境配置(environments)
- 环境配置
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中.每个数据库对应一个 SqlSessionFactory 实例
<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>
注:
(1).默认使用的环境 ID,也就是当前实际使用的环境(比如:default="development")
(2).每个 environment 元素定义的环境 ID(比如:id="development")
(3).事务管理器的配置(比如:type="JDBC")
(4).数据源的配置(比如:type="POOLED")
2.事务管理器
这里只需要知道有两个事物管理器即可
type="[JDBC|MANAGED]"
五.映射器
定义SQL映射语句后,告诉 MyBatis 到哪里去找到这些语句
1.使用相对于类路径的资源引用
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>
- 使用映射器接口实现类的完全限定类名
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
- 将包内的映射器接口实现全部注册为映射器
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
注意:
(1). 接口和他的Mapper配置文件必须同名
(2). 接口和他的Mapper配置文件必须在同一个包下
推荐第一种方式
Mybatis——xml配置的更多相关文章
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- 笔记:MyBatis XML配置详解
MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配置 properties ...
- Mybatis XML配置(转载)
原文地址:https://www.w3cschool.cn/mybatis/f4uw1ilx.html Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它 ...
- MyBatis XML配置properties
来源:https://www.w3cschool.cn/mybatis/7zy61ilv.html XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(sett ...
- 02、MyBatis XML配置
MyBatis-全局配置文件 在MyBatis中全局配置文件有着重要的地位,里面有9类行为信息;如果我们要想将MyBatis运用的熟练,配置全局配置文件是必不可少的步骤,所以我们一定要啃下这一块硬骨头 ...
- 笔记:MyBatis XML配置-Settings 完整属性表
设置参数 描述 有效值 默认值 cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关. true | false true lazyLoadingEnabled 延迟加载的全局开关. ...
- 笔记:MyBatis XML配置-typeAliases 内建别名表
别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boole ...
- 笔记:MyBatis XML配置-typeHandlers 默认类型处理器
类型处理器 Java 类型 JDBC 类型 BooleanTypeHandler java.lang.Boolean, boolean 数据库兼容的 BOOLEAN ByteTypeHandler j ...
- 聊聊、Mybatis XML
引入相应的依赖包 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-sprin ...
随机推荐
- 利用redis+AOP简单处理MQ冥等问题
思路: 1.利用redis内部的串行执行特性,使用getandset()处理分布式问题; 2.注解提供入参选择,通过数据抽取后计算MD5值,实现业务性值的冥等: 代码区: 1.注解 1 /** 2 * ...
- 【第十八期】分享一个网易go面经
自我介绍 未来的主要方向 介绍下之前的项目用到的优化点.难点 为什么不要大量使用goroutine gpm模型 go里面goroutine创建数量有限制吗? 线程和协程有什么区别 golang支持哪些 ...
- MLlib学习——基本数据类型
数据类型--基于RDD的API 本地矢量 标记点 本地矩阵 分布式矩阵 RowMatrix(行矩阵) IndexedRowMatrix(索引行矩阵) CoordinateMatrix(坐标矩阵) Bl ...
- 大白话讲解IOC和AOP
IOC和AOP 什么是IOC IoC(Inversion of control)控制反转,它是一种思想,而Spring Framework实现了这一思想.Ioc也称为依赖注入(DI). IOC控制反转 ...
- 高可用 & 七层负载均衡与四层负载均衡
内容概要 高可用 七层负载均衡 和 四层负载均衡 内容详细 一.高可用 1.什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用 ...
- Solution -「JOISC 2021」「LOJ #3495」聚会 2
\(\mathcal{Description}\) Link. 给定一棵含 \(n\) 个结点的树.称点集 \(S\) 到结点 \(u\) 的会合距离为 \(\sum_{v\in S}\ope ...
- 「codeforces - 1284G」Seollal
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...
- [LeetCode]14.最长公共前缀(Java)
原题地址: longest-common-prefix 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:st ...
- 《操作系统导论》第5章 | 进程API
本章主要讨论UNIX系统中的进程创建.UNIX系统采用了一种非常有趣的创建新进程的方式,即通过一对系统调用:fork()和exec().进程还可以通过第三个系统调用wait(),来等待其创建的子进程执 ...
- 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
1.简介 今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件 ...