MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml

news2025/1/10 23:27:00

😀前言
在进行MyBatis项目开发时,合理和高效的配置是确保项目顺利进行的基础。其中,mybatis-config.xml配置文件扮演着极其重要的角色,它包含了MyBatis运行时的各种必要配置信息,如数据库连接属性、事务管理器配置、别名配置等。
.
提供了一份详细的mybatis-config.xml配置文件解析,一步一步解构每一个配置元素,并提供实例来让您更好地理解其工作原理。不管您是MyBatis的新手,还是有一些经验但希望加深理解的开发人员,希望可以给您提供极大的帮助。

🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
    • 说明
    • properties 属性
      • 创建 jdbc.properties
      • 修改 mybatis-confing.xml
      • 修改父项目的 pom.xml(如果已经配置了*.properties 就不用再配置) 并完成测试
    • settings 全局参数定义
      • settings 列表,通常使用默认
    • typeAliases 别名处理器
      • 修改mybatis-confi g.xml
      • 修改MonsterMapper.xml 并完成测试
    • typeHandlers 类型处理器
    • environments 环境
    • 😄总结

MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml

说明

mybatis 的核心配置文件(mybatis-config.xml),比如配置 jdbc 连接信息,注册 mapper等等,我们需要对这个配置文件有详细的了解

文档地址: https://mybatis.org/mybatis-3/zh/configuration.html

img

properties 属性

● 通过该属性,可以指定一个外部的 jdbc.properties 文件,引入我们的 jdbc 连接

创建 jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
jdbc.user=root
jdbc.pwd=123456

修改 mybatis-confing.xml

    <environments default="development">
        <environment id="development">
            <!--配置事务管理器-->
            <transactionManager type="JDBC"/>
            <!--配置数据源
            解读
            1. 我们使用外部的properties文件来设置相关的值
            2. 这个属性文件,需要统一的放在 resources目录/类加载路径
            3. 关于属性文件,在讲解java基础-集合
            -->
            <dataSource type="POOLED">
                <!--配置驱动-->
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--配置连接mysql-url
                解读:
                1. jdbc:mysql 协议
                2. 127.0.0.1:3306 : 指定连接mysql的ip+port
                3. mybatis: 连接的DB
                4. useSSL=true 表示使用安全连接
                5. &amp; 表示 & 防止解析错误
                6. useUnicode=true : 使用unicode 作用是防止编码错误
                7. characterEncoding=UTF-8 指定使用utf-8, 防止中文乱码
                8. 温馨提示:不要背,直接使用即可
                -->
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.user}"/>
                <property name="password" value="${jdbc.pwd}"/>
            </dataSource>
        </environment>
    </environments>

修改父项目的 pom.xml(如果已经配置了*.properties 就不用再配置) 并完成测试

解读:

在build中配置resources,来防止我们资源导出失败的问题

  1. 不同的idea/maven 可能提示的错误不一样

  2. 不变应万变,少什么文件,就增加相应配置即可

  3. 含义是将 src/main/java目录和子目录 和 src/main/resources目录和子目录的资源文件 xml 和 properties在build项目时,导出到对应的target目录下

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

settings 全局参数定义

settings 列表,通常使用默认

img

typeAliases 别名处理器

  1. 别名是为 Java 类型命名一个短名字。它只和 XML 配置有关,用来减少类名重复的部分
  2. 如果指定了别名,我们的MappperXxxx.xml 文件就可以做相应的简化处理
  3. 注意指定别名后,还是可以使用全名的
  4. 举例说明

修改mybatis-confi g.xml

    <!--配置别名-->
    <typeAliases>
        <!--<typeAlias type="com.wyxedu.entity.Monster" alias="Monster"/>-->

        <!--
            如果一个包下有很多的类,我们可以直接引入包,这样
            该包下面的所有类名,可以直接使用
        -->
        <package name="com.wyxedu.entity"/>
    </typeAliases>

修改MonsterMapper.xml 并完成测试

没有在 mybatis-config.xml 指定 typealiases 时,需要给 Monster 指定全类名

   <!--配置addMonster
       1. id="addMonster" 就是接口的方法名
       2. parameterType="com.wyxedu.entity.Monster" 放入的形参的类型
       3. 注意"com.wyxedu.entity.Monster" 可以简写
       4. 写入sql语句=> 建议,现在sqlyog 写完成-测试通过,再拿过来
       5. (`age`, `birthday`, `email`, `gender`, `name`, `salary`) 表的字段
       6. (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary}) 是从传入的monster对象属性值
       7. 这里 #{age} age 对应monster对象的属性名,其它一样
   -->
    <insert id="addMonster" parameterType="Monster" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO `monster`
        (`age`, `birthday`, `email`, `gender`, `name`, `salary`)
        VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})
    </insert>

typeHandlers 类型处理器

  1. 用于java 类型和jdbc 类型映射
  2. Mybatis 的映射基本已经满足,不太需要重新定义
  3. 这个我们使用默认即可,也就是 mybatis 会自动的将 java 和 jdbc 类型进行转换.
  4. java 类型和 jdbc 类型映射关系一览 [ 手 册 ]

https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

img

environments 环境

resource 注册Mapper 文件: XXXMapper.xml 文件(常用,使用过)

img

class:接口注解实现(使用过)

img

url:外部路径,使用很少,不推荐,

package 方式注册 : 并测试

当一个包下有很多的 Mapper.xml 文件和基于注解实现的接口时,为了方便,我们可以以包方式进行注册将下面的所有 xml 文件和注解接口 都进行注册

<package name="com.wyxedu.mapper"/>

😄总结

通过这篇详细的指南,我们已经深入探讨了MyBatis的mybatis-config.xml配置文件的各个方面。我们学习了如何通过外部属性文件配置JDBC连接信息,如何利用typeAliases来简化XML配置,以及如何正确配置和使用typeHandlers来处理特殊的Java类型和JDBC类型映射。

我们还详细讨论了settings配置和environments配置,以及如何通过pom.xml确保资源文件被正确处理。我们甚至深入研究了如何以包的方式注册Mapper文件,简化了Mapper的管理。

希望这份指南能帮助您更好地掌握MyBatis配置,为您的下一个项目打下坚实的基础。

感谢您的阅读,祝您编码愉快!

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

vector容器的详解与分析

简介&#xff1a; vector容器在高级语言中运用非常广泛&#xff0c;此容器可看成C语言中的动态数组结构用来存储一系列数据&#xff0c;它不仅支持C语言数组中的所有使用方式&#xff0c;还支持vector在C中还有更高级的使用。在C往后的高级运用时&#xff0c;通常把一些常用的操…

基于Java web的医院分诊管理系统文档

摘要 医院分诊管理系统是适应时代发展的需要&#xff0c;提高管理的效率而开发设计的&#xff0c;有效的减少了患者排队取号的时间&#xff0c;增加了医生的工作效率。通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享&#xff0c;及时为医院领导及各部…

报错处理:Redis无法连接

报错环境&#xff1a; Linux Redis 具体报错&#xff1a; redis.exceptions.ConnectionError: Error 111 connecting to 127.0.0.1:6379. Connection refused. 排错思路&#xff1a; 当尝试连接Redis服务时&#xff0c;如果出现连接拒绝的错误&#xff0c;可能是由于Redis服务…

修正能力是智能的关键之一

智能包括事前预测、事中干预和事后反馈。这些方面相互关联&#xff0c;共同构成了一个完整的智能系统。 事前预测&#xff1a;智能系统可以通过分析数据、模式识别和机器学习等方法&#xff0c;进行事前预测。它可以根据已有的信息和历史数据&#xff0c;推测未来可能发生的情况…

csdn如何删除已发布的博客内容

首先&#xff0c;将鼠标移动到自己的头像&#xff0c;会显示内容管理 点击内容管理进入下方界面&#xff0c;选择文章&#xff0c;在想要删除的文章的后边的浏览旁边有三个点&#xff0c;点击后选择删除&#xff0c;删除后回到主页面刷新页面&#xff0c;会发现已发布的文章已经…

饲料添加剂 微生物 植物乳杆菌 学习记录

声明 本文是学习GB 7300.502-2023 饲料添加剂 第5部分&#xff1a;微生物 植物乳杆菌. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了饲料添加剂植物乳杆菌的技术要求、采样、检验规则、标签、包装、运输、贮存和保质 期&#…

K8S 二进制部署

一、准备规划二、操作系统初始化配置2.1 关闭防火墙2.2 关闭selinux2.3 关闭swap2.4 根据规划设置主机名2.5 在master添加hosts2.6 调整内核参数 三、部署 docker引擎四、部署 etcd 集群4.1 准备签发证书环境4.2 生成Etcd证书4.3 创建用于存放 etcd 配置文件&#xff0c;命令文…

Java“牵手”淘宝商品列表页数据采集+商品价格数据排序,商品销量排序数据采集方法

采集场景 在淘宝首页&#xff08;https://s.taobao.com/&#xff09;输入关键词搜索&#xff0c;采集搜索后得到的商品列表页数据。示例中关键词为【耐克】&#xff0c;可根据需求进行更换&#xff0c;同时支持自动批量输入多个关键词。 采集字段 采集字段包括关键字文本值…

js如何实现一个简单的节流函数?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现简单的节流函数⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入…

模电课设:用Multisim简析三极管与场效应管放大电路

1 课设内容 1&#xff09;利用Multisim搭建基于晶体三极管的放大电路&#xff1b; 2&#xff09;利用Multisim搭建基于场效应管的放大电路&#xff1b; 2 模型搭建 我们首先要认清放大电路的概念。它指的是把输入微弱的电信号的功率放大&#xff0c;因为在多数情况下&#xf…

改善客户体验应该从哪几个方面入手?

在为客户提供良好使用体验的同时&#xff0c;还在针对性的为他们制定个性化服务&#xff0c;大多数公司都知道提供良好的客户体验的重要性&#xff0c;&#xff0c;那么如何为客户提供最佳的体验呢&#xff1f; 为客户提供最佳的体验需要从以下几方面入手&#xff1a; 了解客…

IP175G参考资料和引脚图

特性 5端口嵌入式10/100PHY开关控制器 支持5100BaseTX(IP175G)或4100BaseTX(85nm)技术&#xff0c;只需要3.3V单通道 1FX(IP175GH) 支持1KMAC地址表项 448K位包缓冲存储器 100MPHY支持IEEE8023az全双工 10MPHY只支持10BaseTe 支持自动MDI-MDIX功能 电源管理工具(PWMT)…

电工-PN结的工作原理

如果将PN结加正向电压&#xff0c;即P区接正极&#xff0c;N区接负极&#xff0c;如右图所示。由于外加电压的电场方向和PN结内电场方向相反。在外电场的作用下&#xff0c;内电场将会被削弱&#xff0c;使得阻挡层变窄&#xff0c;扩散运动因此增强。这样多数载流子将在外电场…

ADASAPA场景设计分享

相信大家都对于ADAS与APA这两个车机功能都不陌生&#xff0c;对其场景设计过程可能并不是很清楚。今天小怿就跟大家分享一下自己的设计心得。 首先&#xff0c;我们来看一下ADAS和APA的定义&#xff0c;以便我们更好地了解其功能和应用场景。 ADAS定义 ADAS的全称叫Advanced …

【开发工具】使用瑞萨CS+ for CC创建lib和使用lib

首先使用CS新建一个library工程 然后在工程中添加lib所需文件 文件准备好就可以编译了 在文件夹中可以找到生成的lib文件 直接在要使用的工程中加入lib就可以编译使用了

如何用python连接Linux服务器

1.安装paramiko库 pip install paramiko2.使用paramiko库连接linux #导入库 import paramiko#创建一个sshclient对象 ssh paramiko.SSHClient()#允许连接不在know_host中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接主机 ssh.connect(hostname&q…

Web Component -- 即将爆发的原生的 UI 组件化标准

Web Component 概述 Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 每个 Web Component 都具有自己的 DOM 和样式隔离&a…

一个注解,实现数据脱敏

前言 现在是晚上的凌晨&#xff0c;&#x1f62e;‍&#x1f4a8;哎&#xff0c;文章还没有写完&#xff0c;我要继续加班了。shigen也在开始胡思乱想了&#xff0c;蚂蚁也开源了自己的代码模型&#xff0c;似乎程序员变得更加廉价了。 行业的前途在哪里&#xff0c;我的学长告…

16. 线性代数 - 矩阵的性质

文章目录 神经网络的矩阵/向量矩阵的性质Hi,你好。我是茶桁。 根据上一节课的预告,咱们这节课要进入神经网络中,看看神经网络中的矩阵/向量。然后再来详细了解下矩阵的性质。 毕竟咱们的课程并不是普通的数学课,而是人工智能的数学基础。那为什么人工智能需要这些数学基础…

第74篇:美国APT网络攻击破坏伊朗核设施全过程复盘分析(震网病毒上篇)

Part1 前言 大家好&#xff0c;我是ABC_123。在上大学时&#xff0c;就曾听过美国NSA使用震网病毒&#xff08;Stuxnet&#xff09;攻击了物理隔离的伊朗核设施&#xff0c;病毒在传播过程中使用了多达4个windows系统的0day漏洞&#xff0c;最终导致上千台提纯浓缩铀离心机损坏…