当前位置: 首页 > news >正文

Mybatis配置文件详解

    MyBatis通过XML或注解的方式将Java对象与数据库中的记录进行映射,极大地简化了数据访问层的开发。而在MyBatis的核心组成部分中,配置文件扮演着举足轻重的角色。它不仅定义了MyBatis的运行环境,还配置了数据源、事务管理、映射器等关键元素,是确保MyBatis能够正确、高效执行数据库操作的基础。

Mybatis标签说明

标签说明
properties加载properties文件
settings全局配置参数
typeAliases类型别名
typeHandlers类型处理器
objectFactory对象工厂
plugins插件
environments 环境集合属性对象
transactionManager事务管理
dataSource数据源
mappers映射器

properties属性

      在实际开发中,我们通常会将数据库连接参数单独配置在db.properties中,只需要在mybatis-config.xml中加载db.properties的属性值。这样我们在mybatis-config.xml中就不需要对数据库连接参数硬编码。

    将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。引用之后可以使用${key}来引用值


      在resources下面新建db.properties, 里面以key-value的方式写上数据库的四个参数:key的值可以任意写(不建议)。

q=com.mysql.jdbc.Driver
w=jdbc:mysql://localhost:3306/test
e=root
r=123456
    <properties resource="db.properties"></properties><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${q}"/><property name="url" value="${w}"/><property name="username" value="${e}"/><property name="password" value="${r}"/></dataSource></environment></environments>

settings全局参数配置

    mybatis框架在运行时可以调整一些运行参数。比如开启二级缓存,开启延迟加载。

配置选项描述可选值默认值
cacheEnabled全局启用或禁用任何Mapper中配置的缓存true|falsetrue
lazyLoadingEnabled全局启用或禁用延迟加载。当启用后,所有的关系都将被延迟加载。可以通过使用特定关系上的fetchType属性来取代该值。true|falsefalse
aggressiveLazyLoading当启用时,具有惰性加载属性的对象将完全在调用任何惰性属性时加载。否则,每个属性都将按需加载。true|falsetrue
multipleResultSetsEnabled允许或不允许从单个语句返回多个结果集(需要兼容的驱动程序)true|falsetrue
useColumnLabe使用列标签,而不是列名称。不同的驱动程序在这方面的行为也有所不同。请参考驱动程序文档,或测试这两种模式,以确定驱动程序的行为方式。true|falsetrue
useGeneratedKeys允许JDBC支持已生成的密钥。这时需要一个兼容的驱动程序。这个设置强制生成的键在设置为true时使用,因为一些驱动程序拒绝兼容性但仍然可以工作(例如Derby)。true|falsefalse
autoMappingBehavior指定MyBatis是否以及如何自动将列映射到字段/属性。NONE禁用自动映射。PARTIAL只自动映射简单,非嵌套的结果集。FULL将自动映射任何复杂度的结果集(包含嵌套或非嵌套的)。NONE, PARTIAL, FULLPARTIAL
defaultExecutorType配置默认的执行器(Executor): SIMPLE: 简单执行器 REUSE:重用prepared statement的执行器 BATCH:重用statement并且执行批量更新的执行器SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout设置数据库超时时间(单位:秒)任何正数Not Set (null)
safeRowBoundsEnabled允许在嵌套语句上使用行边界。true|falsefalse
mapUnderscoreToCamelCase是否开启, 数据库列:A_COLUMN自动映射为属性:aColumntrue|falsefalse
localCacheScopeMyBatis使用本地缓存来提高查询效率,本地缓存默认Scope是:SESSION, 在同一次SESSION期间执行的所有查询都将被缓存. localCacheScope=STATEME:本地会话将仅用于stateme的执行,对同一Sql会话的两个不同调用之间将不共享任何数据SESSION|STATEMENTSESSION
jdbcTypeForNull指定空值的JDBC类型,当没有为参数提供特定的JDBC类型时。一些驱动程序需要指定列JDBC类型,常用的值:NULL,VARCHAR,OTHERJdbcType enumeration.Most common are: NULL,VARCHAR and OTHEROTHER
lazyLoadTriggerMethods指定哪个对象的方法会触发延迟加载方法名列表,多个方法名之间使用逗号分割equlas, clone, hashCode, toString
defaultScriptingLanguage指定动态SQL生成时默认使用的语言。一个类型的别名或完全限定的类名。
callSettersOnNulls指定在检索到的值为空时,是否会调用设置器或映射的put方法。当您依赖于Map.keySet()或空值初始化时,它很有用。请注意原语,如(int、布尔值等)。将不会被设置为null。true|falsefalse
logPrefix指定MyBatis将添加到日志记录器名称中的前缀字符串。任何字符串未设置
logImpl指定MyBatis应该使用哪些日志记录实现类。如果此设置日志记录类不存在,则将自动发现日志记录实现。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING为设置
proxyFactory代理工厂指定MyBatis将用于创建能够实现延迟加载功能的对象的代理工具。CGLIB|JAVASSIST

 typeAliases类型别名

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

 

自定义别名 

在mybatis主配置文件设置别名,可以在mapper文件中直接使用别名

    <typeAliases><!-- 为单个类定义别名 --><typeAlias alias="User" type="com.example.domain.User"/><!-- 为指定包下的所有类定义别名,别名默认为类名的首字母小写 --><package name="com.example.domain"/></typeAliases>

 

mappers映射器

    配置mapper时有四种写法,分别是:

  • <mapper resource= " "/>:使用相对于类路径资源
  • <mapper url= " "/>:使用完全限定路径
  • <mapper class= " "/>:使用mapper接口类路径                                                              注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
  • <package name= " "/>:注册指定包下面的所有接口                                                      注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
http://www.lryc.cn/news/527605.html

相关文章:

  • 《深度揭秘:TPU张量计算架构如何重塑深度学习运算》
  • Java基础知识总结(二十二)--List接口
  • [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器
  • 算法随笔_27:最大宽度坡
  • 无公网IP 外网访问本地部署 llamafile 大语言模型
  • 使用PC版本剪映制作照片MV
  • 搭建 docxify 静态博客教程
  • 汽车OEMs一般出于什么目的来自定义Autosar CP一些内容
  • Vue.js Vuex 模块化管理
  • 分布式光纤应变监测是一种高精度、分布式的监测技术
  • 用Devc++与easyx一步一步做游戏[启动界面部分]-解决hover闪烁问题及优化
  • mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看当前数据库是那个,删除数据库,使用数据库;查看当前数据库有哪些表
  • 【数据结构】_链表经典算法OJ:分割链表(力扣—中等)
  • k8s支持自定义field-selector spec.hostNetwork过滤
  • ICSE‘25 LLM Assistance for Memory Safety
  • 《十七》浏览器基础
  • TikTok 推出了一款 IDE,用于快速构建 AI 应用
  • 阅读springboot源码 记录
  • Linux之内存管理前世今生(一)
  • Beautiful Soup 入门指南:从零开始掌握网页解析
  • 网络通信---MCU移植LWIP
  • Go-并行编程新手指南
  • 基于Django的个人博客系统的设计与实现
  • Python爬虫获取custom-1688自定义API操作接口
  • kaggle-ISIC 2024 - 使用 3D-TBP 检测皮肤癌-学习笔记
  • 滤波电路汇总
  • 1.Template Method 模式
  • MySQL分表自动化创建的实现方案(存储过程、事件调度器)
  • 基于回归分析法的光伏发电系统最大功率计算simulink建模与仿真
  • 计算机毕业设计【任务书】怎么写?