MyBatis核心配置文件:解锁数据之美的密码

MyBatis,这位编程的诗人,通过其独特的核心配置文件,为我们描绘出一幅数据之美的画卷。本篇博客将带你深入探讨MyBatis核心配置文件的奥秘,让你能够更好地理解和运用这个优雅的数据持久化框架。

最近想搞私域,欢迎各位大佬光临😀😀😀!

在这里插入图片描述

踏入奇妙的数据之美

首先,让我们一起踏入MyBatis的奇妙世界。在这个世界中,数据不再是冰冷的存储单元,而是充满艺术和灵感的精灵。而MyBatis的核心配置文件,就如同这个精灵的指南,引领我们探索数据之美的深邃奥秘。

创建MyBatis配置文件

MyBatis的核心配置文件通常被命名为mybatis-config.xml,是MyBatis的启动文件,负责整体引导。让我们一起来创建这个神奇的配置文件。

<!-- mybatis-config.xml -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<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/mybatis_example" />
                <property name="username" value="your_username" />
                <property name="password" value="your_password" />
            </dataSource>
        </environment>
    </environments>

    <!-- 配置Mapper映射文件 -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>
</configuration>

这段配置文件中,我们完成了两项主要配置:配置数据源和配置Mapper映射文件。下面,让我们逐步深入了解这些配置的细节。

数据源的魔法

在MyBatis的世界里,environments元素用于配置数据源,而数据源是连接数据库的魔法之钥。一个environment代表一个数据库环境,里面包含了一个事务管理器和一个数据源。

<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/mybatis_example" />
            <property name="username" value="your_username" />
            <property name="password" value="your_password" />
        </dataSource>
    </environment>
</environments>
  • default="development":指定默认使用的环境,这里是development
  • <transactionManager type="JDBC" />:配置事务管理器的类型,这里使用JDBC事务管理器。
  • <dataSource type="POOLED">:配置数据源的类型,这里使用POOLED数据源,即连接池。
  • 数据库连接信息:<property>元素用于配置数据库连接信息,包括驱动、URL、用户名和密码。

通过这样的配置,我们为MyBatis打开了连接数据库的大门,让数据之美的奇妙旅程开始。

Mapper映射文件的魔法笔触

在MyBatis的世界中,mappers元素用于配置Mapper映射文件。Mapper映射文件是MyBatis中最为重要的配置之一,其中包含了与SQL语句的咒语,通过这些咒语,我们能够操控数据库的灵魂。

<mappers>
    <mapper resource="mapper/UserMapper.xml" />
</mappers>

这里通过<mapper>元素引入了UserMapper.xml文件,这个文件中包含了与User实体类相关的SQL语句。接下来,我们一起进入这个神秘的映射文件。

编写Mapper映射文件:UserMapper.xml

在这个映射文件中,我们将定义一些神奇的咒语,以及与User实体类相关的SQL语句。

<!-- mapper/UserMapper.xml -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <resultMap id="UserResultMap" type="com.example.model.User">
        <id property="id" column="id" />
        <result property="username" column="username" />
        <result property="password" column="password" />
    </resultMap>

    <select id="getUserById" resultMap="UserResultMap">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!-- 其他SQL语句可以继续在此添加 -->
</mapper>

在这个文件中,我们定义了一个命名空间com.example.mapper.UserMapper,并且配置了一个resultMap用于映射查询结果到User实体类。接着,我们编写了一个简单的SELECT语句,通过id查询用户信息。这里的resultMap指定了如何将数据库查询结果映射到User对象,其中id表示主键,property表示Java对象的属性,column表示数据库表的列名。

通过这个Mapper映射文件,我们向MyBatis传达了“通过用户ID获取用户信息”的咒语,为数据之美的呈现创造了条件。

Java中的奇迹:创建SqlSessionFactory

在Java代码中,我们需要通过SqlSessionFactory来启动MyBatis,这个对象是MyBatis的核心工厂,负责创建SqlSession对象。

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
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);

            // 创建SqlSession
            try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
                // 执行SQL语句
                User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1);

                // 打印查询结果
                System.out.println("User ID: " + user.getId());
                System.out.println("Username: " + user.getUsername());
                System.out.println("Password: " + user.getPassword());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这段Java代码演示了如何使用MyBatis。通过SqlSessionFactoryBuilder从配置文件创建SqlSessionFactory,然后通过SqlSessionFactory创建SqlSession。最后,我们执行了一个查询并输出了结果。

Type Aliases:类型的名字是什么?

在MyBatis的配置文件中,可以通过typeAliases元素为Java类型指定别名。这个功能类似于给Java类取个昵称,使得在配置文件中使用起来更加方便。

<typeAliases>
    <typeAlias alias="User" type="com.example.model.User" />
</typeAliases>

这段配置为com.example.model.User这个类指定了别名为User。这样,在后续的配置或映射文件中,可以使用User代替完整的类名,使得配置文件更加简洁易读。

Settings:全局配置的魔法

settings元素用于配置MyBatis的全局行为。这里可以设置各种属性,影响MyBatis的整体运行。

<settings>
    <setting name="cacheEnabled" value="true" />
    <setting name="lazyLoadingEnabled" value="true" />
    <!-- 更多全局配置项可以继续添加 -->
</settings>

上述配置启用了MyBatis的缓存和懒加载。通过适当地配置settings,可以根据项目需求定制MyBatis的行为。

Environments and Database Connection:数据库连接的奇妙之旅

environments元素用于配置MyBatis的运行环境,包括事务管理器和数据源。在一个环境中,可以配置多个数据源和事务管理器的选择。

<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/mybatis_example" />
            <property name="username" value="your_username" />
            <property name="password" value="your_password" />
        </dataSource>
    </environment>
</environments>

上述配置中,我们使用了JDBC事务管理器和POOLED数据源。通过适当的配置,可以连接不同的数据库和使用不同的事务管理器。

Type Handlers:Java类型和数据库类型的魔法桥梁

typeHandlers元素用于配置MyBatis的类型处理器,这些处理器负责Java类型和数据库类型之间的映射关系。通过配置typeHandlers,我们可以为特定的Java类型指定自定义的类型处理器。

<typeHandlers>
    <typeHandler handler="com.example.handlers.CustomTypeHandler" />
</typeHandlers>

上述配置中,我们指定了一个自定义的类型处理器com.example.handlers.CustomTypeHandler。类型处理器在处理数据库和Java类型映射时发挥着重要作用,允许我们根据需求选择合适的处理器。

Plugins:插件的魔法

MyBatis的插件系统允许我们在SQL语句执行的过程中插入自定义的逻辑,从而对MyBatis的行为进行增强。插件可以拦截方法的执行,修改SQL语句,甚至完全替代原始的方法。

<plugins>
    <plugin interceptor="com.example.plugins.CustomInterceptor">
        <property name="pluginProperty" value="pluginValue" />
    </plugin>
</plugins>

上述配置中,我们配置了一个自定义的插件com.example.plugins.CustomInterceptor。插件为MyBatis提供了灵活的扩展性,允许我们在MyBatis的运行过程中插入自定义的逻辑,实现更加强大的功能。

窥探全局配置的奥秘

MyBatis的全局配置文件是数据之美的密码,通过巧妙的配置,我们可以引导MyBatis的行为,让它按照我们的意愿工作。在这篇博客中,我们深入了解了MyBatis核心配置文件的一些重要元素,包括数据源的配置、Mapper映射文件的编写、Java代码中的使用,以及一些全局配置的技巧。

MyBatis的核心配置文件不再是冰冷的配置项,而是编程的艺术。通过简单的配置,我们为MyBatis打开了数据之美的大门,让它为我们展示出最优雅的数据操作方式。希望通过这篇博客,你能更好地理解MyBatis核心配置文件的奥秘,将其应用到实际项目中,创造出属于你的数据之美。这是一场关于数据和艺术的奇妙之旅,让我们一起踏入这片神秘的领域。

作者信息

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows创建Linux虚拟环境-WSL

使用工具WSL 官方安装使用文档 安装 WSL | Microsoft Learn 开始通过 WSL 使用 VS Code | Microsoft Learn 具体过程 1. cmd以“管理员身份运行”&#xff0c;执行以下指令&#xff0c;安装完成后&#xff0c;电脑重启&#xff0c;安装完成生效。 wsl --install 2. 查看…

离散化算法

简介 预先空间中的有效个体映射到有限空间中去&#xff0c;以此提高算法的时空效率 离散化是一种将数组的值域压缩&#xff0c;从而更加关注元素的大小关系的算法 一些依靠下标实现的算法和数据结构无法实现时&#xff0c;我们就需要离散化 例如原数组的范围是{1&#xff0…

unity学习(66)——控制器Joystick Pack优化

Joystick Pack这种重力带惯性不利于正常开发。决定进行优化。有一种万事俱备只欠东风的感觉。 源代码如下&#xff1a; 1.在脚本中找到轮盘所输出的方向值 2.把方向的改变值加到鸣人模型身上。 2.1控制器脚本中添加model变量 2.2在unity中赋值 2.3代码中修改位置 using Syst…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容&#xff0c;倒是有别人的sg2042机器可以通过ssh使用&#xff0c;但是用起来太不方便了&#xff0c;经常断掉&#xff0c;所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧&#xff0c;第一个就是qemu&#xf…

深入解析stressapptest源码的OsLayer:操作系统相关的抽象接口详解

深入解析stressapptest的OsLayer&#xff1a;操作系统相关的抽象接口详解 一、类概述二、类属性三、主要方法四、功能架构4.1、Initialize()接口4.2、VirtualToPhysical()函数4.3、FlushPageCache(void)函数4.4、FastFlush()函数4.5、FindDimm(uint64, char *, int)函数4.6、Fi…

k8s为什么删除了pod但是还是没删除掉的问题,deployment在影响

deployment 影响pod删除 一、问题所在二、解决问题 一、问题所在 执行&#xff1a;kubectl get pods --all-namespaces&#xff0c;获取dashboard相关的pod kubectl get pods --all-namespaces | grep dashboardkubectl delete pod dashboard-metrics-scraper-546d6779cb-4x6…

AI换脸软件facefusion2.4.1汉化版整合包分享及使用教程

FaceFusion2.4.1版本软件功能:图片换脸&#xff0c;视频换脸&#xff0c;此版本侧脸效果大幅度优化提高无需配置任何环境&#xff0c;解压即用&#xff0c;本地版本&#xff0c;无需联网也可使用&#xff0c;一次下载&#xff0c;永久免费使用效果演示&#xff1a;https://www.…

Python数学建模-2.9Matplotlib库

Matplotlib库是Python中一个非常流行的绘图库&#xff0c;它提供了大量的绘图工具&#xff0c;可以生成各种类型的静态、动态、交互式的图表。Matplotlib的设计初衷是为了与NumPy配合使用&#xff0c;从而提供一个强大的数学绘图工具。 1.Matplotlib的主要特点 丰富的图表类型…

AI程序员已诞生,如何保住自己饭碗?

一、背景 全球首位AI程序员Devin的诞生无疑引发了业界对职业前景和人工智能影响的热烈讨论。AI程序员的出现确实预示着人工智能技术在编程领域的重大突破&#xff0c;它们能够进行自主学习、修复bug、掌握全栈技能&#xff0c;并且在特定场景下展现出了替代部分人类程序员工作…

Redis 更新开源许可证 - 不再支持云供应商提供商业化的 Redis

原文&#xff1a;Rowan Trollope - 2024.03.20 未来的 Redis 版本将继续在 RSALv2 和 SSPLv1 双许可证下提供源代码的免费和宽松使用&#xff1b;这些版本将整合先前仅在 Redis Stack 中可用的高级数据类型和处理引擎。 从今天开始&#xff0c;所有未来的 Redis 版本都将以开…

JetPack之LiveData

目录 一、LiveData简介1.1 LiveData是什么&#xff1f; 二、LiveData使用2.1 LiveData基础使用2.2 LiveData搭配Service模拟后台消息2.3 LiveData在组件中的数据传递 三、LiveData应用场景 一、LiveData简介 1.1 LiveData是什么&#xff1f; LiveData是一种可观察的数据存储器…

这里是一本关于 DevOps 企业级 CI/CD 实战的书籍...

文章目录 &#x1f4cb; 前言&#x1f3af; 什么是 DevOps&#x1f3af; 什么是 CI/CD&#x1f3af;什么是 Jenkins&#x1f9e9; Jenkins 简单案例 &#x1f3af; DevOps 企业级实战书籍推荐&#x1f525; 参与方式 &#x1f4cb; 前言 企业级 CI/CD 实战是一个涉及到软件开发…

语音神经科学—05. Human cortical encoding of pitch in tonal and non-tonal languages

Human cortical encoding of pitch in tonal and non-tonal languages&#xff08;在音调语音和非音调语言中人类大脑皮层的音高编码&#xff09; 专业术语 tonal language 音调语言 pitch 音高 lexical tone 词汇音调 anatomical properties 解刨学特性 temporal lobe 颞叶 s…

开源Thinkphp核心在线网页音乐播放php源码,附带系统搭建教程

安装教程 环境要求&#xff1a;apachePHP7.0Thinkphp伪静态 安装教程&#xff1a;修改Application目录下的database.php信息 导入根目录下的install.sql到数据库 修改Static目录下的player目录下的player.js文件的第140行的“域名”为你的域名 修改Static目录下的player2目录下…

四川易点慧电子商务抖音小店:安全可靠,购物新选择

在数字化浪潮席卷全球的今天&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。四川易点慧电子商务抖音小店&#xff0c;作为新兴的电商力量&#xff0c;以其安全可靠的特点&#xff0c;赢得了广大消费者的信赖和喜爱。 一、品牌信誉&#xff0c;品质保障 四川易点慧…

【MySQL】数据库的基础概念

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习计网、mysql和算法 ✈️专栏&#xff1a;MySQL学习 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

Jackson 2.x 系列【4】对象映射器 ObjectMapper

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jackson-demo 文章目录 1. 概述2. 案例演示2.1 创建对象2.2 写入2.3 读取 3. 泛型擦除 1. 概述 在前两篇…

【漏洞复现】5. Fastjson 1.2.24反序列化漏洞(CVE-2017-18349)复现

文章目录 1. 预备知识2. 漏洞复现2.1 漏洞介绍2.2 漏洞原理分析2.2.1 Fastjson序列化/反序列化原理2.2.2 Fastjson反序列化漏洞原理 2.3 实验环境2.3.1 靶场搭建 2.3.2 攻击机配置2.3.3 Java反序列化工具marshalsec&#xff1a;2.4 漏洞复现2.4.1 漏洞探测 2.5 漏洞修复 1. 预备…

中央空调的计费方式

中央空调如何计费 电费计量型中央空调计费方法 计费原理:电费计量型就是通过计量空调末端的用电量&#xff0c;再根据用电量换算为冷量&#xff0c;统计中央空调系统中各用户的总冷量&#xff0c;再根据各用户的冷量比例来分摊费用。 优点: 电量参数容易计量&#xff0c;管理…

白话transformer(五):位置编码

在前面其实讲过位置编码的完整内容&#xff0c;这次我们具体看看他的数学原理 B站视频讲解 白话transformer&#xff08;五&#xff09; 1、位置编码的位置 根据原论文的结构图我们可以看到&#xff0c;位置编码位于embedding后&#xff0c;在正式进入注意力机制前面。 也就是…