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

news2024/11/23 23:03:29

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

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

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

相关文章

腾讯云8核16G轻量服务器支持多少人在线?CPU性能如何?

腾讯云8核16G轻量服务器CPU性能如何&#xff1f;18M带宽支持多少人在线&#xff1f;轻量应用服务器具有100%CPU性能&#xff0c;18M带宽下载速度2304KB/秒&#xff0c;折合2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;月流量3500GB&#xff0c;折合每天116.6GB流量&…

超分辨率(3)--基于RCAN网络实现图像超分辨率重建

目录 一.项目介绍 二.项目流程详解 2.1.数据处理模块 2.2.损失函数设置 2.3.网络模型构建 三.测试网络 一.项目介绍 RCAN&#xff1a;Residual Channel Attention Network&#xff08;残差通道注意网络 ) 卷积神经网络(CNN)的深度对于图像超分辨率(SR)是极其关键的因素…

Python文件处理---os模块、pathlib模块、open()函数

Python 文件处理是一个核心编程概念&#xff0c;涉及到文件的读取、写入、创建、删除以及管理文件路径等操作&#xff0c;让我们循序渐进的一起探究吧 目录 一、open()函数 1、打开文件 2、读取文件 使用 .read() 方法 使用 .readline() 方法 使用 .readlines() 方法 3…

c/c++ 深拷贝和浅拷贝

深拷贝与浅拷贝 深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;是对象复制的两种不同方式&#xff0c;它们涉及到对象成员数据的复制方式和内存管理。 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a; 浅拷贝是指将一个对象的…

移动端滚轮插件mobile-select.js的使用记录

#小李子9479# 把文件下载放到static/mobile-select里面&#xff0c;如下图 分别引入js和css。 注意&#xff1a;一定要在页面加载完成后就初始化这个组件 &#xff0c;否则的话&#xff0c;第一次点击无效。

国内外主流智能驾驶芯片企业和技术介绍

英伟达依托积累多年的图形计算处理能力、GPU计算经验&#xff0c;布局智能驾驶芯片。 英伟达是全球最大的智能计算平台型公司&#xff0c;早期专注 PC 图形计算&#xff0c;后重点布局AI 领域&#xff0c;并在独立显卡、GPU等领域卓有成就。公司2006 年开发了基于 GPU 的「CUD…

算法沉淀——贪心算法五(leetcode真题剖析)

算法沉淀——贪心算法五 01.跳跃游戏 II02.跳跃游戏03.加油站04.单调递增的数字 01.跳跃游戏 II 题目链接&#xff1a;https://leetcode.cn/problems/jump-game-ii/ 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转…

AIGC——ComfyUI工作流搭建、导入与常用工作流下载

工作流 ComfyUI工作流是一个基于图形节点编辑器的工作流程&#xff0c;通过拖拽各种节点到画布上&#xff0c;连接节点之间的关系&#xff0c;构建从加载模型到生成图像的流程。每个节点代表一个与Stable Diffusion相关的模型或功能&#xff0c;节点之间通过连线传递图片信息。…

支小蜜校园防欺凌系统可以在厕所使用吗?

随着社会的进步和教育理念的更新&#xff0c;校园安全问题日益受到社会各界的关注。近年来&#xff0c;校园欺凌事件频发&#xff0c;给受害者的身心健康带来了严重影响&#xff0c;也给整个校园环境的和谐稳定带来了威胁。为此&#xff0c;许多学校开始引入校园防欺凌系统&…

详细分析Python模块中的雪花算法(附模板)

目录 前言1. 基本知识2. 模板3. Demo 前言 分布式ID的生成推荐阅读&#xff1a;分布式ID生成方法的超详细分析&#xff08;全&#xff09; 1. 基本知识 Snowflake 算法是一种用于生成全局唯一 ID 的分布式算法&#xff0c;最初由 Twitter 设计并开源 它被设计用于解决分布式…

设计模式|工厂模式

文章目录 1. 工厂模式的三种实现2. 简单工厂模式和工厂方法模式示例3. 抽象工厂模式示例4. 工厂模式与多态的关系5. 工程模式与策略模式的关系6. 面试中可能遇到的问题6.1 **工厂模式的概念是什么&#xff1f;**6.2 **工厂模式解决了什么问题&#xff1f;**6.3 **工厂模式的优点…

C++ 模板入门详解

目录 0. 模板引入 1.函数模板 1. 函数重载的缺点 2. 函数模板的概念和格式 2. 函数模板的实例化 2.1 隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2.2 显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 2.3 函数模板参数的匹…

蓝桥杯刷题-替换字符

代码&#xff1a; 顺着题目意思写即可 sinput() nint(input()) for i in range(n):l, r, x, y input().split() if x not in s[int(l)-1:int(r)]: # 如果待替换字符不在区间内则跳过continueelse:# 找到待替换字符的位置&#xff0c;用replace函数进行替换ss[:int(l)-1]s[in…

Linux-docker安装数据库mysql

1、拉去mysql镜像&#xff1a; docker pull mysql2、创建容器挂载路径 mkdir -p /usr/local/jiuxiang/mysql/data # 数据存储位置 mkdir -p /usr/local/jiuxiang/mysql/logs # 日志存储位置 mkdir -p /usr/local/jiuxiang/mysql/conf # 配置文件3、启动容器 docker run -…

STL第一弹

2 STL初识 2.1 STL的诞生 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想&#xff0c;目的就是复用性的提升 大多情况下&#xff0c;数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生…

MySQL的基本操作与增删改查管理操作

一、MySQL数据库sql语句 1.1 sql 命令 database数据库table表row行column列user用户select从数据表中获取数据updata更新数据库中的数据delete从数据库中删除数据insert into 向数据表插入数据create database创建新数据库alter database修改数据库create table创建新表alter…

蓝桥杯 2023 省B 飞机降落

首先&#xff0c;这题要求的数据量比较少&#xff0c;我们可以考虑考虑暴力解法。 这题可能难在很多情况的考虑&#xff0c;比如说&#xff1a; 现在时间是10&#xff0c;有个飞机20才到&#xff0c;我们是可以干等10分钟。 #include <iostream> #include <…

【机器学习300问】39、高斯分布模型如何实现异常检测?

一、异常检测是什么&#xff1f; &#xff08;1&#xff09;举几个例子 ① 信用卡交易异常检测 在信用卡交易数据分析中&#xff0c;如果某个用户的消费习惯通常是小额且本地化消费&#xff0c;那么突然出现一笔大额且跨国的交易就可能被标记为异常。 ② 电机温度异常检测 在电…

echart trigger 为 axis 的时候不显示 tooltip 解决办法

echart trigger 为 axis 的时候不显示 tooltip 解决办法 在项目 vitetsvue3 中使用 echart 显示了一个曲线图&#xff1a; 但当把图表的 trigger 设置成 axis 的时候&#xff0c;鼠标扫过并不显示具体的数值&#xff0c;如上图所示。 但 trigger item 的时候是正常的。 解决…

Docker Desktop 安装 ClickHouse 超级简单教程

Docker desktop 安装 clickhouse 超级简单 文章目录 Docker desktop 安装 clickhouse 超级简单 什么是 Docker &#xff1f;安装下准备安装Docker配置安装 ClickHouse配置数据库密码DBeaver 测试创建表总结 什么是 Docker &#xff1f; 下载 Docker desktop Docker Desktop …