首页 > 其他分享 >深入解析 MyBatis 核心配置文件

深入解析 MyBatis 核心配置文件

时间:2024-12-10 23:11:13浏览次数:7  
标签:配置文件 映射 数据库 配置 db MyBatis 解析

深入解析 MyBatis 核心配置文件

MyBatis 是一个优秀的持久层框架,它通过 XML 配置文件来管理数据库连接、SQL 映射、事务等核心功能。本文将详细解析一个典型的 MyBatis 核心配置文件,逐个解释其中的配置项,帮助大家更好地理解 MyBatis 的核心配置。


1. XML 声明与 DTD 定义

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
  • <?xml version="1.0" encoding="UTF-8" ?>: 声明这是一个 XML 文件,版本为 1.0,编码为 UTF-8。
  • <!DOCTYPE configuration>: 定义文档类型,指定 MyBatis 配置文件的 DTD(文档类型定义)。
    • -//mybatis.org//DTD Config 3.0//EN: 表示这是一个 MyBatis 3.0 的配置文件。
    • http://mybatis.org/dtd/mybatis-3-config.dtd: 指定 DTD 文件的 URL,用于验证配置文件的结构。

2. <configuration> 根元素

<configuration>
    <!-- 配置内容 -->
</configuration>
  • <configuration>: MyBatis 配置文件的根元素,所有配置项都放在这个标签内。

3. 加载外部配置文件

<properties resource="db.properties"></properties>
  • <properties>: 用于加载外部的属性文件。
    • resource="db.properties": 指定外部属性文件的路径,这里是 db.properties,通常用于存储数据库连接信息(如驱动、URL、用户名、密码等)。
  • 作用: 将数据库连接信息从配置文件中分离出来,便于管理和维护。

4. 全局设置

<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
  • <settings>: 配置 MyBatis 的全局行为。
    • <setting name="mapUnderscoreToCamelCase" value="true"/>: 开启下划线命名到驼峰命名的自动映射。
      • mapUnderscoreToCamelCase: 如果数据库字段名是下划线命名(如 user_name),MyBatis 会自动将其映射为 Java 对象的驼峰命名属性(如 userName)。
      • value="true": 表示启用该功能。
  • 作用: 简化数据库字段与 Java 对象属性之间的映射。

5. 类型别名

<typeAliases>
    <package name="com.ithero.pojo"/>
</typeAliases>
  • <typeAliases>: 定义类型别名,简化 SQL 映射文件中的类型引用。
    • <package name="com.ithero.pojo"/>: 指定一个包名,MyBatis 会自动扫描该包下的所有类,并为每个类生成一个默认的别名。
      • 例如,com.ithero.pojo.User 类的别名是 User
  • 作用: 减少 SQL 映射文件中的冗长类名,提高可读性。

6. 环境配置

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <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>
  • <environments>: 配置 MyBatis 的环境(如开发环境、测试环境、生产环境)。
    • default="development": 指定默认的环境是 development
  • <environment>: 定义一个具体的环境。
    • id="development": 环境的唯一标识符,这里是 development
    • <transactionManager type="JDBC"/>: 配置事务管理器。
      • type="JDBC": 使用 JDBC 的事务管理方式,直接依赖数据库的事务管理。
    • <dataSource type="POOLED">: 配置数据源。
      • type="POOLED": 使用 MyBatis 提供的连接池(PooledDataSource)。
      • <property>: 配置数据源的属性。
        • driver: 数据库驱动类名,值从 db.properties 中读取。
        • url: 数据库连接 URL,值从 db.properties 中读取。
        • username: 数据库用户名,值从 db.properties 中读取。
        • password: 数据库密码,值从 db.properties 中读取。
  • 作用: 配置数据库连接信息和事务管理方式。

7. 映射器配置

<mappers>
    <!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
    <package name="com.ithero.dao"/>
</mappers>
  • <mappers>: 配置 SQL 映射文件或接口。
    • <package name="com.ithero.dao"/>: 指定一个包名,MyBatis 会自动扫描该包下的所有映射文件或接口。
      • 例如,com.ithero.dao.UserMapper.xmlcom.ithero.dao.UserMapper 接口会被自动加载。
    • <mapper resource="org/mybatis/example/BlogMapper.xml"/>: (注释掉的配置)用于加载单个 SQL 映射文件。
  • 作用: 告诉 MyBatis 去哪里查找 SQL 映射文件或接口。

总结

通过上述配置,这个 MyBatis 核心配置文件完成了以下功能:

  1. 加载外部属性文件:通过 db.properties 文件管理数据库连接信息。
  2. 全局设置:开启下划线到驼峰命名的自动映射。
  3. 类型别名:为 com.ithero.pojo 包下的类生成别名。
  4. 环境配置:配置开发环境的数据库连接和事务管理。
  5. 映射器配置:扫描 com.ithero.dao 包下的 SQL 映射文件或接口。

标签:配置文件,映射,数据库,配置,db,MyBatis,解析
From: https://www.cnblogs.com/itcq1024/p/18598195

相关文章

  • mybatis
    硬编码可以配置到配置文件操作繁琐的地方mybatis都自动完成通过上面的描述可以看出Mapper代理方式的目的:解决原生方式中的硬编码简化后期执行SQL静态代码块:static修饰的区域类声明时就会执行,适合做初始化操作静态代码块中的变量要声明为静态的packagecom.servlet;......
  • MyBatis-Plus主键生成策略
    MyBatis-Plus提供了内置的主键生成策略,可以在不改动业务代码的前提下自动生成主键值,而无需依赖数据库的自增主键。以下是解决方法和配置方式:(1)IdType.ASSIGN_ID(默认雪花算法)使用MyBatis-Plus提供的雪花算法生成全局唯一主键。此策略适用于Long或String类型的主键。@Ta......
  • SpringBoot全局配置文件
    SpringBoot使用一个application.properties或者application.yaml的文件作为全局配置文件。application.properties配置文件application.properties文件中定义springboot项目的相关属性注入系统变量,系统属性等server.address=80server.port=8080server.datasource.driver......
  • 二叉搜索树深度解析:三个关键算法(235,669,108)
    ......
  • 第三章 信息系统治理 (2024年详细解析版)
    目录3.1IT治理3.1.1IT治理基础3.1.1.1信息系统建设中的核心问题3.1.1.2什么是IT治理?3.1.1.3驱动组织进行IT治理的因素(为什么大中企业都引入IT治理/IT治理好处)3.1.1.4IT治理的内涵3.1.1.5IT治理主要目标3.1.1.5IT治理的管理层次3.1.2IT治理体系3.1.2.1IT治理......
  • 【探索Linux的奥秘:全面解析及其应用场景】
    本章目录探索Linux的奥秘:全面解析及其应用场景1.引言1.1Linux简介1.2Linux的历史和发展1.3为什么选择Linux1.4Linux的发行版概览1.5Linux的核心概念:内核、Shell与文件系统**图示:Linux核心概念的关系**![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f......
  • 全链路解析如何构建数据资产管理框架及落地实践丨袋鼠云“数智基建+数智应用”赋能分
    为了帮助企业更好的进行数字化转型升级,袋鼠云精心策划了一系列以“数字基建+数智应用”为核心的赋能分享活动,本系列直播共有四期,每期聚焦于不同的关键议题,深入分析企业数字化转型中的挑战与应对策略。我们期待通过这些直播活动,与业界同仁共同探讨数字化转型中的难点,并寻找切实可行......
  • 做了反向代理和负载均衡的nginx配置文件简单示例(nginx.conf) HTTP负载均衡/TCP负载均
    在默认配置的基础上,启用http反向代理和负载均衡。同时配置了TCP反向代理和负载均衡。另外,能够实现每天生成一个日志文件,日志用json格式,日志中的日期重新格式化成yyyy-MM-ddTHH:mm:ss.ZZZ这样子。nginx.conf#usernobody;worker_processes1;#error_loglogs/error......
  • 由函数的解析式给出函数的性质 | 你想到了吗
    前情概要按理说,在高三数学的学习中,我们不断的出错,不停的改错,也在不停的进步,更为重要的是,我们的数学素养要跟着提升才是.比如通过函数的学习,我们应该有这样的共识,题目一旦给定函数的图象,我们从图象就能完整解读这个函数的所有性质,换言之,这是将函数的性质以形的形式给出来了;那么......
  • 模拟C#与PLC Modbus TCP通讯,报文解析
     privatevoidbutton1_Click(objectsender,EventArgse){TcpClientclient=newTcpClient("192.168.200.84",4198);//替换为服务器IP和端口NetworkStreamstream=client.GetStream();try{......