Mybatis配置-设置(settings)

 

这些是非常重要的调整,它们修改了MyBatis在运行时的行为方式。下表描述了这些设置以及它们的含义和默认值。

SettingDescriptionValid ValuesDefault
cacheEnabled全局启用或禁用配置在此配置下的任何mapper中的所有缓存。true | falsetrue
lazyLoadingEnabled全局启用或禁用延迟加载。当启用时,所有关联将进行延迟加载。可以通过在特定关联上使用fetchType属性来覆盖此值。true | falsefalse
aggressiveLazyLoading当启用时,任何方法调用将加载对象的所有延迟属性。否则,每个属性将按需加载(参见lazyLoadTriggerMethods)。true | falsefalse (true in ≤3.4.1)
multipleResultSetsEnabled允许或禁止从单个语句中返回多个结果集(需要兼容的驱动程序)。true | falsetrue
useColumnLabel使用列标签而不是列名。不同的驱动程序在这方面的行为可能会有所不同。请参考驱动程序的文档,或者测试两种模式以确定您的驱动程序的行为方式。true | falsetrue
useGeneratedKeys允许对生成的键提供JDBC支持。需要一个兼容的驱动程序。如果设置为true,此设置将强制使用生成的键,因为某些驱动程序拒绝兼容性但仍然能正常工作(例如Derby驱动程序)。true | falseFalse
autoMappingBehavior
 

指定MyBatis是否以及如何自动将列映射到字段/属性。NONE禁用自动映射。PARTIAL只会自动映射未定义内部嵌套结果映射的结果。FULL将自动映射任何复杂性的结果映射(包含嵌套或其他情况)。

  • NONE:禁用自动映射
  • PARTIAL:只自动映射未定义内部嵌套结果映射的结果
  • FULL:自动映射任何复杂性的结果映射(包含嵌套或其他情况)
NONE, PARTIAL, FULLPARTIAL
autoMappingUnknownColumnBehavior
 

当自动映射目标检测到未知列(或未知属性类型)时,指定其行为。

  • NONE:不做任何操作。
  • WARNING:输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志级别必须设置为WARN)。
  • FAILING:映射失败(抛出SqlSessionException异常)。

请注意,当autoMappingBehavior设置为FULL时,可能会出现误报。

NONE, WARNING, FAILINGNONE
defaultExecutorType
 

配置默认的执行器(Executor)。

  • SIMPLE:执行器不做任何特殊操作。
  • REUSE:执行器重用预编译语句(prepared statements)。
  • BATCH:执行器重用语句并批量更新。

根据需求选择适合的执行器配置。

SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout设置驱动程序等待数据库响应的时间,单位为秒。Any positive integerNot Set (null)
defaultFetchSize为驱动程序设置一个提示,以控制返回结果的提取大小。这个参数的值可以被查询的设置所覆盖。Any positive integerNot Set (null)
defaultResultSetType在每个语句的设置中忽略时,指定滚动策略。(自3.5.2版本起可用)FORWARD_ONLY | SCROLL_SENSITIVE | SCROLL_INSENSITIVE | DEFAULT(same behavior with ‘Not Set’)Not Set (null)
safeRowBoundsEnabled允许在嵌套语句上使用RowBounds。如果允许,请将其设置为false。true | falseFalse
safeResultHandlerEnabled允许在嵌套语句上使用ResultHandler。如果允许,请将其设置为false。true | falseTrue
mapUnderscoreToCamelCase启用从经典数据库列名A_COLUMN到驼峰式经典Java属性名aColumn的自动映射。true | falseFalse
localCacheScopeMyBatis使用本地缓存来防止循环引用并加快重复嵌套查询的速度。默认情况下(SESSION),在一个会话期间执行的所有查询都会被缓存起来。如果设置localCacheScope为STATEMENT,则本地会话仅用于语句执行,同一个SqlSession的两次不同调用之间的数据不会被共享。SESSION | STATEMENTSESSION
jdbcTypeForNull在未为参数指定特定的JDBC类型时,指定null值的JDBC类型。有些驱动程序需要指定列的JDBC类型,而其他驱动程序可以使用通用的值,如NULL、VARCHAR或OTHER。JdbcType enumeration. Most common are: NULL, VARCHAR and OTHEROTHER
lazyLoadTriggerMethods指定哪些对象的方法触发延迟加载。A method name list separated by commasequals,clone,hashCode,toString
defaultScriptingLanguage指定默认用于动态SQL生成的语言。A type alias or fully qualified class name.org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler指定默认情况下用于枚举类型的TypeHandler。(自3.4.5版本起可用)A type alias or fully qualified class name.org.apache.ibatis.type.EnumTypeHandler
callSettersOnNulls指定当检索到的值为null时,是调用setter方法还是map的put方法。当您依赖于Map.keySet()或null值初始化时,这很有用。请注意,像int、boolean等原始类型将不会设置为null。true | falsefalse
returnInstanceForEmptyRowMyBatis默认情况下,在返回的行的所有列都为NULL时,返回null。当启用此设置时,MyBatis将返回一个空实例。请注意,这也适用于嵌套结果(例如集合和关联)。自3.4.2版本起可用。true | falsefalse
logPrefix指定MyBatis将添加到日志记录器名称前面的前缀字符串。Any StringNot set
logImpl指定MyBatis应使用哪个日志实现。如果未设置此选项,则将自动发现日志实现。SLF4J | LOG4J(deprecated since 3.5.9) | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGINGNot set
proxyFactory指定MyBatis将使用的代理工具来创建支持延迟加载的对象。CGLIB (deprecated since 3.5.10) | JAVASSISTJAVASSIST (MyBatis 3.3 or above)
vfsImpl指定VFS(虚拟文件系统)的实现。Fully qualified class names of custom VFS implementation separated by commas.Not set
useActualParamName允许使用方法签名中声明的实际参数名称来引用语句参数。要使用此功能,您的项目必须在Java 8中使用 -parameters 选项进行编译。 (自3.4.1版本起可用)true | falsetrue
configurationFactory指定一个提供Configuration实例的类。返回的Configuration实例用于加载反序列化对象的延迟属性。这个类必须有一个方法,签名为static Configuration getConfiguration()。(自3.2.3版本起可用)A type alias or fully qualified class name.Not set
shrinkWhitespacesInSql从SQL中删除额外的空白字符。请注意,这也会影响SQL中的字面字符串。(自3.5.5版本起可用)true | falsefalse
defaultSqlProviderType指定一个SQL提供程序类,该类包含提供程序方法(自3.5.6版本起)。当在SQL提供程序注解(例如@SelectProvider)的type(或value)属性被省略时,该类适用于type(或value)属性。A type alias or fully qualified class nameNot set
nullableOnForEach指定 ​foreach​标签上 ​nullable​属性的默认值。(自3.5.9版本起可用)true | falsefalse
argNameBasedConstructorAutoMapping在应用构造函数自动映射时,使用参数名称来搜索要映射的列,而不是依赖于列的顺序。(自3.5.10版本起可用)true | falsefalse

一个完全配置的settings元素的示例如下:

<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="safeResultHandlerEnabled" value="true"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/><setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/><setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumTypeHandler"/><setting name="callSettersOnNulls" value="false"/><setting name="returnInstanceForEmptyRow" value="false"/><setting name="logPrefix" value="exampleLogPreFix_"/><setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/><setting name="proxyFactory" value="CGLIB | JAVASSIST"/><setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/><setting name="useActualParamName" value="true"/><setting name="configurationFactory" value="org.mybatis.example.ConfigurationFactory"/>
</settings>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

骨传导耳机可以保护听力吗?一文读懂骨传导耳机和开放式耳机的区别!

由于骨传导耳机通过人体骨骼来传递声音&#xff0c;不经过耳道&#xff0c;不会损伤耳膜以及内毛细胞&#xff0c;所以使用骨传导耳机不仅不会损伤听力&#xff0c;还能在一定程度上起到保护听力的作用。 一、骨传导耳机和开放式耳机的区别是什么&#xff1f; 由于骨传导耳机…

5G工业网关视频传输应用

随着科技的不断进步&#xff0c;5G网络技术已经成为了当前最热门的话题之一。而其中一个引人注目的领域就是5G视频传输和5G工业网关应用。在传统网络通信中&#xff0c;由于带宽和延迟的限制&#xff0c;视频传输常常受到限制&#xff0c;而工业网关应用也存在着链路不稳定、数…

【用三大件写出的开门烟花特效】

又到了一年一度的春节时期啦&#xff01;昨天呢是北方的小年&#xff0c;今天是南方的小年&#xff0c;看到大家可以愉快的放烟花&#xff0c;过大年很是羡慕呀&#xff01;辞旧岁&#xff0c;贺新春&#xff0c;今年我呀要放烟花&#xff0c;过春节&#xff01;&#x1f9e8;。…

[已解决]HttpMessageNotReadableException: JSON parse error: Unexpected character:解析JSON时出现异常的问题分析与解决方案

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

小小手表探索更多 好玩伴也是好帮手

华为儿童手表 5X 不仅是孩子的好玩伴&#xff0c;也是家长的好帮手。全能形态让小小手表探索更多&#xff0c;高清双摄记录美好&#xff0c;离线定位随时掌握&#xff0c;绿色纯净守护成长&#xff0c;让孩子享受科技带来的安全与乐趣。

「新版」PyCharm 加载condav Environment / Conda executableis not found

在新版的 PyCharm 配置中&#xff0c;设置Conda环境不再与旧版本保持一致&#xff0c;对于新手而言可能不清楚如何加载&#xff0c;作者也是郁闷了好久&#xff0c;经过一顿输出发现需要通过加载conda配置&#xff0c;才调取conda虚拟环境&#xff0c;而不再是直接调取conda的虚…

做外贸如何找客户

做外贸是一项复杂而又具有挑战性的工作。在这个竞争激烈的市场中&#xff0c;找到合适的客户是成功的关键。下面是一些关于米贸搜如何找到外贸客户的经验分享。 第一&#xff0c;建立一个专业的网站。互联网已经成为了人们获取信息、进行交流的主要平台。因此&#xff0c;建立…

Linux--fork创建子进程详解

目录 一.初识fork函数 二.fork的返回值 三.fork原理 1.fork是如何创建子进程的&#xff1f; 2.为什么fork会有两个返回值&#xff1f; 3.为什么父进程的返回值是子进程的pid&#xff0c;子进程返回值是0&#xff1f; 4.fork之后&#xff0c;父子进程谁先运行&#xff1f;…

优先队列的时间复杂度

优先队列的时间复杂度&#xff1f; 这个问题主要分为两个部分&#xff1a;优先队列是什么&#xff1f;优先队列的时间复杂度是多少&#xff1f; 优先队列是什么&#xff1f; 优先队列&#xff0c;英文名&#xff1a;Priority Queue。顾名思义&#xff0c;优先队列是一种特殊…

【深度学习】强化学习(四)强化学习的值函数

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数1. 状态值函数&#xff08;State Value Function&#xff09;a. 状态值函数的定义b. 贝尔曼方程&#xff08;Bellman Eq…

亚马逊鲲鹏系统可快速创建大量的买家账户

在数字时代的浪潮中&#xff0c;人们总是在寻找更便捷、高效的方式来完成各种任务&#xff0c;而亚马逊鲲鹏系统的出现&#xff0c;无疑为那些渴望拥有大批量买家号的人提供了一个全新的可能性。在这个系统中&#xff0c;注册买家号变得轻而易举&#xff0c;只需准备好一些必要…

WebRTC AEC回声消除算法拆解

WebRTC AEC算法流程分析——时延估计&#xff08;一&#xff09; 其实&#xff0c;网上有很多类似资料&#xff0c;各个大厂研发不同应用场景设备的音频工程师基本都对其进行了拆解&#xff0c;有些闪烁其词&#xff0c;有些却很深奥&#xff0c;笔者随着对WebRTC了解的深入&a…

韵达快递查询入口,将途经指定城市的单号筛选出来

批量查询韵达快递单号的物流信息&#xff0c;并将途经指定城市的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 韵达快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的伙伴记得先注册&#x…

生物分子相互作用的奥秘与挑战:探索未来药物设计的新方向

在生命科学领域&#xff0c;生物分子相互作用的研究日益受到关注。这种相互作用涉及蛋白质、核酸、脂质和糖类等生物分子之间的相互识别、结合和调控。理解这些相互作用对于揭示生命现象、疾病机制和治疗策略具有重要意义。 然而&#xff0c;生物分子相互作用的奥秘也带来了诸…

探索“超级服务器” TON:SDK 应用与开发入门

TON 是一个由多个组件构成的去中心化和开放的互联网平台&#xff0c;聚焦于实现广泛的跨链互操作性&#xff0c;同时在高可扩展性的安全框架中运作。TON 区块链被设计为分布式超级计算机或“超级服务器&#xff08;superserver&#xff09;”&#xff0c;旨在提供各种产品和服务…

在Node.js中MongoDB更新数据的方法

本文主要介绍在Node.js中MongoDB更新数据的方法。 目录 Node.js中MongoDB更新数据使用原生 MongoDB 驱动程序更新数据使用 Mongoose 更新数据 Node.js中MongoDB更新数据 在Node.js中&#xff0c;可以使用原生的 MongoDB 驱动程序或者使用 Mongoose 来更新 MongoDB 数据。 下面…

【PHP】计算某个特定时间戳距离现在的天数

在PHP中&#xff0c;你可以使用time()函数获取当前时间的时间戳&#xff0c;然后将它与你想要计算的过去或未来的时间戳进行比较。为了得到相差的天数&#xff0c;你需要先用两个时间戳相减得到秒数差&#xff0c;然后再除以一天的总秒数&#xff08;通常是86400秒&#xff09;…

【腾讯云 HAI 域探秘】释放生产力:基于 HAI 打造团队专属的 AI 编程助手

文章目录 前言一、HAI 产品介绍二、HAI 应用场景介绍三、HAI 生产力场景探索&#xff1a;基于 HAI 打造团队专属的 AI 编程助手3.1 申请 HAI 内测资格3.2 购买 HAI 实例3.3 下载 CodeShell-7B-Chat 模型3.4 部署 text-generation-inference(TGI)推理服务3.4.1 下载 text-genera…

Linux 使用 Anaconda+Uwsgi 部署 Django项目和前端项目

一、安装Anaconda 使用Anaconda创建python环境的优点&#xff1a; virtualenv只能创建系统原有的python版本&#xff0c;而不能创建创建任意版本的环境 而Anaconda的虚拟环境中&#xff0c;你可以指定任意现存可使用的python环境&#xff08;包括比原环境版本高的python版本&a…

代码签名证书:数字安全世界的守门员

在这个信息化的时代&#xff0c;如果说互联网是高速流动的信息海洋&#xff0c;那么软件便是承载这些信息的庞大船队。而让人倍感安心地乘坐这些船的&#xff0c;正是被称为代码签名证书的重要安全措施。 你可以把代码签名证书想象成是软件世界的一位神秘守门员。它存在的目的&…