【Spring 篇】MyBatis核心配置文件解密:数据之门的守护精灵

news/2024/7/24 7:09:28 标签: mybatis, tomcat, oracle, spring, 开发语言, git, windows

在这里插入图片描述

欢迎来到MyBatis的幕后花絮,今天我们将深入解析MyBatis的核心配置文件,这个神秘的数据之门的守护精灵。这份配置文件是连接你的应用程序和数据库之间的纽带,也是整个MyBatis舞台背后的幕后工作者。在这篇博客中,我们将揭开核心配置文件的神秘面纱,一探究竟。

一个咒语的开始

在开始我们的探险之前,让我们先理解MyBatis核心配置文件的基本结构。这个文件通常命名为 mybatis-config.xml,是整个MyBatis框架的大脑和指挥中心。打开这个文件,你会看到如下的内容:

<?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">
<configuration>
    <!-- MyBatis configuration settings go here -->
</configuration>

这个配置文件以标准的XML格式开头,包含了一个根元素 <configuration>,其中的注释提示我们MyBatis的配置都将放置在这里。这就好比是一场魔法表演的前奏,我们将在这里配置MyBatis的各种参数和属性,引导整个舞台的演出。

数据之门的开启咒语

在MyBatis的核心配置文件中,有一个最为关键的配置项,那就是数据源的配置。数据源是连接数据库的关键,我们需要告诉MyBatis在哪里找到我们的数据。让我们来看一个简单的数据源配置:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

在这个例子中,我们定义了一个名为 development 的环境,这是一个通用的开发环境。我们指定了一个JDBC事务管理器和一个POOLED类型的数据源。接下来,我们设置了数据库的连接信息,包括数据库驱动、连接URL、用户名和密码。这就好比是打开数据之门的咒语,MyBatis现在知道了数据库的具体位置。

魔法粉尘:Type Aliases

MyBatis不仅支持原生的Java类型,还允许我们使用别名来简化配置和映射。这就像是在魔法的森林中植入了一些魔法粉尘,让一切变得更加轻松。在核心配置文件中,我们可以使用 <typeAliases> 元素定义这些别名:

<configuration>
    <!-- 其他配置 ... -->
    
    <typeAliases>
        <!-- 单个别名的定义 -->
        <typeAlias alias="User" type="com.example.model.User"/>

        <!-- 包扫描定义别名 -->
        <package name="com.example.model"/>
    </typeAliases>
</configuration>

这里我们定义了一个名为 User 的别名,指向了 com.example.model.User 这个类。而通过 <package> 元素,我们可以告诉MyBatis去扫描指定包下的所有类,将它们的简单类名作为别名。这样,我们在映射文件中就可以使用简短的别名,使配置更加清晰和简洁。

映射文件:SQL的魔法书

MyBatis的映射文件是这场魔法表演中的主角之一,其中包含了SQL语句的定义、参数映射、结果映射等一系列魔法。在核心配置文件中,我们需要告诉MyBatis去哪里找这些映射文件,以及它们的存放位置。这就像是在魔法城堡中指定了宝藏的所在地。看一下怎么配置:

<configuration>
    <!-- 其他配置 ... -->

    <mappers>
        <!-- 单个映射文件的引入 -->
        <mapper resource="com/example/mapper/UserMapper.xml"/>

        <!-- 包扫描引入映射文件 -->
        <package name="com.example.mapper"/>
    </mappers>
</configuration>

在这里,我们使用 <mapper> 元素引入了一个名为 UserMapper.xml 的映射文件。而通过 <package> 元素,我们可以告诉MyBatis去扫描指定包下的所有映射文件。这样,MyBatis就知道了在何处找到这些神秘的SQL语句和映射规则。

参数之书和结果之镜

在MyBatis的映射文件中,我们不仅可以定义SQL语句,还可以定义参数映射和结果映射。这就像是在魔法书中指定了咒语的参数和施法后的结果。让我们来看一个简单的例子:

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <!-- 参数映射 -->
    <parameterMap id="userParameter" type="com.example.model.User">
        <parameter property="id" jdbcType="BIGINT"/>
        <parameter property="username" jdbcType="VARCHAR"/>
        <parameter property="password" jdbcType="VARCHAR"/>
    </parameterMap>

    <!-- 结果映射 -->
    <resultMap id="userResult" type="com.example.model.User">
        <id property="id" column="id" jdbcType="BIGINT"/>
        <result property="username" column="username" jdbcType="VARCHAR"/>
        <result property="password" column="password" jdbcType="VARCHAR"/>
    </resultMap>

    <!-- SQL语句 -->
    <select id="getUserById" parameterMap="userParameter" resultMap="userResult">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

在这个例子中,我们定义了一个名为 userParameter 的参数映射,描述了 User 类的三个属性以及对应的JDBC数据类型。同时,我们定义了一个名为 userResult 的结果映射,描述了查询结果的三个字段以及对应的JDBC数据类型。最后,我们使用 <select> 元素定义了一个查询语句,并指定了参数映射和结果映射。

揭开帷幕:最终咒语

当我们配置好数据源、类型别名、映射文件等一切后,我们需要告诉MyBatis去读取和应用这个核心配置文件。这就好比是在整个魔法表演结束时,主持人宣布最终咒语。在Java代码中,我们通过以下方式创建SqlSessionFactory:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisMagic {

    public static void main(String[] args) {
        // 读取 MyBatis 配置文件
        String resource = "mybatis-config.xml";
        try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
            // 创建 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // TODO: 使用 SqlSessionFactory 进行后续操作
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这段代码中,我们使用 Resources.getResourceAsStream 方法读取了MyBatis核心配置文件。然后,通过 SqlSessionFactoryBuilderbuild 方法创建了一个 SqlSessionFactory 实例。有了这个实例,我们就可以在后续的代码中使用MyBatis进行数据库操作了。

小结:舞台的幕后工作者

MyBatis核心配置文件是整个MyBatis舞台的幕后工作者,负责组织和引导所有的数据操作。在这篇博客中,我们揭开了MyBatis核心配置文件的神秘面纱,学习了如何配置数据源、类型别名、映射文件等关键信息。这就好比是在一场魔法表演中,我们了解了所有幕后的精彩。希望通过这篇博客,你能更深入地理解MyBatis的核心配置,为你的数据魔法带来更多的灵感和理解。让我们继续共同探索数据之门的奇妙旅程,在编码的世界中畅游。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

http://www.niftyadmin.cn/n/5336891.html

相关文章

Javaweb之SpringBootWeb案例员工管理之新增员工的详细解析

SpringBootWeb案例 前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能&#xff0c;还有两个需要实现&#xff1a; 新增员工 修改员工 首先我们先完成"新增员工"的功能开发&#xff0c;再完成"修改员工"的功能开发。而在&q…

DP活动:以太网HMI线下培训RA6M3 HMI Board[MQTT Squareline LVGL]

以太网HMI线下培训-环境准备 这是官方社群的文档&#xff1a;【腾讯文档】以太网线下培训&#xff08;HMI-Board&#xff09;所有教程都在这~ https://docs.qq.com/doc/DY0FIWFVuTEpORlNn R A 6 M 3 H M I − B o a r d \textcolor{#4183c4}{RA6M3 HMI-Board} RA6M3HMI−Board…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

假设检验:以样本服从二项分布举例

目录 假设检验一、假设检验的思想二、假设检验的基本步骤1. 确定要进行检验的假设2. 选择检验统计量3. 确定用于做决策的拒绝域4. 求出检验统计量的值5. 查看样本结果是否位于拒绝域内6. 做出决策 三、举例说明例子1——某公司治疗打鼾例子2——女士品茶的故事 假设检验 一、假…

麒麟V10挂载iso,配置yum源

本文介绍yum 如何挂载本地镜像源 1) 拷贝镜像到本地 2) 执行以下命令&#xff1a; # mount -o loop 镜像路径及镜像名字 /mnt&#xff08;或 media&#xff09; 挂载前 挂载后 3) 进入/etc/yum.repos.d&#xff08;yum.repos.d 是一个目录&#xff0c;该目录是分析 RPM 软件…

03 OSPF

参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2

【设计模式 创建型】单例模式

类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法&#xff08;静态方法&#xff09; 指一个类只有一个实例&#xff0c;且该类能自行创建这个实例的一种模…

Cocos在VsCode中调试-端口安全问题 net::ERR_UNSAFE_PORT

问题: POST http://127.0.0.1:6000/api/login net::ERR_UNSAFE_PORT 原因&#xff1a; 这个错误表明你在尝试使用一个被认为是不安全的端口进行网络请求。通常情况下&#xff0c;浏览器会限制使用一些特定的端口&#xff0c;因为它们被认为是潜在的安全风险。 在这种情况下&a…