前言
今天本篇主要介绍一下MyBatis的全局配置文件的使用 。
configuration
mybatis-config.xml文件的头部格式我们就不说了,直接从属性开始介绍,configuration为最顶层节点,其余所有的属性都必须嵌套在configuration内,MyBatis配置文件的顶层节点如下:
"">
"">
可以看到configuration内的全部顶层节点只有9个,下面我们就一个个来分析一下 。面试宝典:https://www.yoodb.com
properties
下面是一个相对完整的属性配置
"xxx/xxx.properties">
"jdbc.driver" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"db.properties"/>
"http://xxxx">
"jdbc.driver" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"db.properties"/>
上面我特意分开写,就是怕引起大家的误解,因为resource和url只允许存在一个,不能同时配置两个属性,可以看到源码中的解析过程:
文章插图
同时配置了resource和url会抛出异常 。
配置了properties属性之后,在xml其他配置文件中可以直接通过${xxx}来读取 。
properties配置有三种方式,resource或者url指定,直接配置在子节点properties中,另一种就是上一篇提到的,直接代码中去其他地方读取properties文件,然后传入build方法 。
那么这三种方式既然都能配置,假如属性配置重复了,优先级是怎么样的呢?
properties优先级
properties配置的属性如果重复,优先级如下:
- 1、第一优先:在代码中直接通过properties传入build方法 。
- 2、第二优先:通过resource或者url读取到的properties文件中属性 。
- 3、第三优先:直接在properties内的子标签property内定义的属性 。
在实际开发中,建议是只使用一种,使用多种方式混合的话会给后期维护造成困难,而且不同类型的配置属性混合时可读性也不好 。
settings
settings是MyBatis中最复杂,也是最重要的内容之一 。当然这里说的复杂并不是说配置方式复杂,而是settings能配置的东西非常多,一些很核心的功能都是通过settings标签配置的 。下面是一个完整的属性配置示例:
"cacheEnabled" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"lazyLoadingEnabled" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"aggressiveLazyLoading" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"multipleResultSetsEnabled" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"useColumnLabel" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"useGeneratedKeys" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"autoMAppingBehavior" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"NONE"/>
"defaultExecutorType" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"SIMPLE"/>
"defaultStatementTimeout" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"100"/>
"safeRowBoundsEnabled" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"mapUnderscoreToCamelCase" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"localCacheScope" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"SESSION"/>
"jdbcTypeForNull" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"VARCHAR"/>
"lazyLoadTriggerMethods" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"equals"/>
"defaultScriptingLanguage" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"org.Apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver"/>
"callSettersOnNulls" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"false"/>
"logPrefix" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"LONELY_WOLF_"/>
"logImpl" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"SLF4J"/>
"proxyFactory" value=https://www.isolves.com/it/cxkf/kj/2022-11-24/"JAVASSIST"/>
所有的可设置值列举如下(这些属性有个映像就可以了,不需要去记,常用的多用几次自然就记住了,不常用的需要的时候再查一下资料就可以了,所以建议大家可以收藏之后方便查询):
文章插图
文章插图
推荐阅读
- 教你用A4纸种菜
- ASP.NET原创框架十-应用模块开发之页面生成
- HTTP 框架 Hertz 实践入门:性能测试指南
- MySql中json类型数据的查询以及在MyBatis-Plus中的使用
- 高压电线下打手机可能被电击吗?
- 一起来捉妖最全面的攻略 一起来捉妖攻略
- 四大发明家都发明了什么 而有史以来,最全面的发明家之一
- 对于 Display 框架,我需要了解 KMS api 吗?| Linux 驱动
- 装了.Net 7.0后,工程框架用 net6 的 dotnet watch 出错临时解决方案
- python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例