MyBatis配置与映射文件深度解析

news2024/10/7 12:27:10

Alt

文章目录

    • MyBatis配置文件解析
      • 配置文件的组成部分
      • 配置数据源和数据库连接信息
      • MyBatis的属性和类型别名
    • MyBatis映射文件详解
      • 映射文件的作用
      • 编写简单的映射文件
      • resultMap和resultType的区别
    • 结语

🎈个人主页:程序员 小侯
🎐CSDN新晋作者
🎉欢迎 👍点赞✍评论⭐收藏
✨收录专栏:MyBatis
✨文章内容:配置和映射
🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

MyBatis作为一款优秀的Java持久层框架,其核心理念之一就是通过简单的配置来实现对数据库的访问。在本文中,我们将深入研究MyBatis的配置文件和映射文件,了解它们各自的作用以及如何正确配置以满足项目需求。
在这里插入图片描述

MyBatis配置文件解析

在这里插入图片描述

配置文件的组成部分

MyBatis的配置文件通常是一个XML文件,包括以下主要部分:

  1. <configuration>元素: 整个配置文件的根元素,包含了MyBatis的全局配置。

  2. <properties>元素: 用于定义属性,这些属性可以在整个配置文件中被引用。

  3. <settings>元素: 包含一系列MyBatis的设置项,例如缓存、延迟加载等。

  4. <typeAliases>元素: 用于配置Java类型的别名,简化映射文件中的类型引用。

  5. <typeHandlers>元素: 配置类型处理器,用于处理Java类型与数据库类型之间的转换。

  6. <environments>元素: 包含一个或多个<environment>元素,定义了数据库环境的配置。

  7. <mappers>元素: 包含了一个或多个<mapper>元素,用于指定映射文件的位置。

配置数据源和数据库连接信息

配置数据源和数据库连接信息是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/mydatabase"/>
            <property name="username" value="root"/>
            <property name="password" value="password"/>
        </dataSource>
    </environment>
</environments>

在这个例子中,我们配置了一个名为"development"的环境,使用了JDBC事务管理器和连接池数据源。你需要根据自己的数据库配置信息修改<property>元素中的值。

MyBatis的属性和类型别名

MyBatis的属性和类型别名用于简化配置和映射文件中的内容。在<configuration>元素下,可以使用<properties>元素定义属性,例如:

<properties resource="mybatis.properties">
    <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase"/>
    <property name="jdbc.username" value="root"/>
    <property name="jdbc.password" value="password"/>
</properties>

这样,在其他地方就可以通过${}语法引用这些属性,例如:

<dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</dataSource>

而类型别名则通过<typeAliases>元素进行配置,例如:

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

这样在映射文件中就可以使用简短的别名User代替完整的类名com.example.User

MyBatis映射文件详解

映射文件的作用

MyBatis映射文件是定义Java对象与数据库表之间映射关系的地方。每个映射文件通常对应一个数据库操作,包括SQL语句、参数映射、结果映射等。
在这里插入图片描述

编写简单的映射文件

一个简单的映射文件示例如下:

<mapper namespace="com.example.UserMapper">
    <select id="selectUser" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

在这个例子中,我们定义了一个名为selectUser的查询操作,使用了#{id}作为参数占位符,并指定了返回的结果类型为User

resultMap和resultType的区别

在映射文件中,`resultMap

resultType`都是用于指定查询结果映射的元素,但它们有一些区别:

  • resultType 直接指定查询结果的类型,适用于简单查询,不涉及复杂的映射关系。

    <select id="selectUser" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
    
  • resultMap 定义了复杂的映射关系,可以自定义映射规则,适用于涉及多表关联或特殊映射需求的查询。

    <resultMap id="userResultMap" type="User">
        <id property="id" column="user_id"/>
        <result property="username" column="user_name"/>
        <result property="email" column="user_email"/>
    </resultMap>
    
    <select id="selectUser" resultMap="userResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>
    

通过resultMap,我们可以更灵活地定义属性与列之间的映射关系,实现更复杂的查询需求。

结语

MyBatis的配置文件和映射文件是使用这一优秀的Java持久层框架的关键。通过深入理解配置文件的各个部分和映射文件的作用,我们能更好地利用MyBatis进行数据库操作,提高开发效率,简化代码结构。在实际项目中,合理的配置和灵活的映射规则将是成功使用MyBatis的关键。

后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

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

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

相关文章

unity UGUI无限循环滚动居中

最近在做一个ui循环滚动的功能&#xff0c;网上找了半天脚本感觉都和我实际需求不太符合&#xff0c;自己花费一些时间完成了这个功能记录一下。下面开始正题 &#xff0c;我是采用unity自带组件Scroll View来完成&#xff0c;首先设置Scroll View如下图 面板层级结构如下 然…

zookeeper的安装部署

目录 简介 Zookeeper架构设计及原理 1.Zookeeper定义 2.Zookeeper的特点 3.Zookeeper的基本架构 4.Zookeeper的工作原理 5.Zookeeper的数据模型 &#xff08;1&#xff09;临时节点 &#xff08;2&#xff09;顺序节点 &#xff08;3&#xff09;观察机制 Zookeeper集…

ICC2/innovus merge gds

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 calibre merge gds的方法示例参考往期文章: Calibre Merge GDS ICC2: write_gds -merge_files "std.gds sram.gds io.gds ip.gds ... ..." innovus: streamout -…

Postman接口Mock Servier服务器

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 应用场景&#xff1a;后端的接口还没有开发完成&#xff0c;前端的业务需要调用后端的接口&#xff0c;可以使用mock模拟。 一…

开发板上网详细教程

开发板上网详细教程 PC端操作开发板操作 写在前面 今天想配置开发板的boa服务器&#xff0c;需要下载sudo apt-get install bison flex&#xff0c;但是一直报错&#xff0c;就蒙蔽了&#xff0c;后来想想真不应该啊&#xff0c;电脑和开发板通信没问题&#xff0c;但也只是如此…

VueEcharts的使用简解以及常用网站

目录 一&#xff1a;前言 二&#xff1a;实现 1、安装echarts依赖 2、创建图表 1&#xff09;全局引入 2&#xff09;按需引入 三&#xff1a;结尾 一&#xff1a;前言 VueEcharts 是项目开发中可视化的一个重要知识部分。其涵盖了柱状图&#xff0c;饼状图&#xff0c;…

LoadRunner脚本编写之三(事务函数)

关于脚本的这块&#xff0c;前两篇都在讲C语言&#xff0c;其实&#xff0c;要整理点实用的东西挺难&#xff0c;在应用中多对录制的脚本分析&#xff0c;但对于新手学脚本确实无从下手。 先贴一个脚本&#xff1a; 完整代码&#xff1a; 重点代码部分&#xff1a; Action(…

Redis快速入门(基础篇)

简介&#xff1a; 是一个高性能的 key-value数据库。 存在内存中 与其他 key-value 缓存产品有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保持在磁盘中&#xff0c;重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类…

浅了解下:运营商大数据如何挖掘电销同行网站,APP,精准获客 ?

今天我们要讲的是运营商精准大数据营销。运营商精准大数据营销只是精准营销的一种&#xff0c;精准营销筛选包含了电话营销这个词。那么电话营销如何通过运营商大数据找到精准的客户&#xff1f;电销如何通过大数据找到准确的客户来源&#xff1f; 在全网时代&#xff0c;大数…

TYUST-RM2023-NewMaker哨兵视觉代码

目录 1 TYUST-RM2023-NewMaker哨兵视觉代码 1.1 说明 1.2 算法设计 1.3 识别思路 TYUST-RM2023-NewMaker哨兵视觉代码 说明 本套代码是太原科技大学NewMaker战队2023赛季哨兵开源代码 本套代码主要含有&#xff1a;TYUST-RM2023赛季哨兵视觉代码&#xff0c;主要模块…

科研学习|科研软件——SPSS:卡方检验(交叉表)

第一步 打开SPSS软件&#xff0c;在工具栏中选中【打开-文件-数据】&#xff0c;然后选择一份要打开的数据表(如图所示)。 第二步 在工具栏中找到【分析-描述统计-交叉表】打开交叉表对话框(如图所示)。 第三步 接着将【行-列】相关变量放在对应对话框中(如图所示)。 第四步 在…

ubuntu 20.04+ORB_SLAM3 安装配库教程

目录 安装ros(如果只是运行ORB-SLAM3&#xff0c;可以跳过安装)0. ros 安装教程1. 安装opencv2. 安装Pangolin3. 安装Eigen34.安装Python & libssl-dev5.安装boost库6.安装ceres库&#xff08;不必须&#xff09;7.安装Sophus库&#xff08;不必须&#xff09;8. 安装g20库…

科研学习|研究方法——逻辑回归系数的显著性检验(python实现)

1. 背景 回归方程与回归系数的显著性检验 2. statsmodels 库 statsmodels库可以用来做逻辑回归、线性回归。并且会在summary中给出显著性检验的结果。最终我们想要的就是如下图的报告。 3. 计算过程 如果我们使用的sklearn构建的逻辑回归就没有办法直接输出这个报告&#xff0c…

Xocde 升级15 或者 iOS17报错:

错误&#xff1a; Assertion failed: (false && "compact unwind compressed function offset doesnt fit in 24 bits"), function operator(), file Layout.cpp, line 5758. 翻译&#xff1a; 断言失败&#xff1a;&#xff08;false&&“压缩展开…

基于安卓android微信小程序的食谱大全系统

项目介绍 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对食谱大全进行需求分析&#xff0c;得出食谱大全主要功能。接着对食谱大全进行总体设计和详细设计。总体设…

窗口管理工具 Mosaic mac中文版功能特点

MosAIc mac是一种窗口管理工具&#xff0c;可帮助您在计算机屏幕上有效地组织和管理多个应用程序窗口。它提供了一种直观的方式来调整和排列窗口&#xff0c;以最大化工作效率。 MosAIc mac窗口管理软件功能和特点 窗口布局&#xff1a;MosAIc允许您选择不同的窗口布局&#x…

SketchUp (草图大师) SU2023 中文版软件安装包下载地址及安装教程!

1.鼠标右键【SketchUp2023(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到SketchUp2023(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右键【Setup】选择【以管理员身份运行】。 3.点击【Next】。 4.点击Install Language右边…

JVM查看内存新生代老年代回收情况,排查oom

jstat 命令 jstat - [-t] [-h] [ []] option&#xff1a;我们经常使用的选项有gc、gcutil vmid&#xff1a;java进程id interval&#xff1a;间隔时间&#xff0c;单位为毫秒 count&#xff1a;打印次数 每秒打印一次 jstat -gc 9162 1000S0C:年轻代第一个survivor的容量…

think5和fastadmin验证规则的使用

在fastadmin中使用验证规则只需要两步即可 第一步 首先在控制器中开启验证规则 protected $modelValidatetrue;//开启验证规则protected $modelSceneValidatetrue;//开启场景验证第二步 在 app\admin\validate 和控制器对应的 validate 中添加 验证规则以及场景验证 <?…

Blackmagic Design DaVinci Resolve Studio18(达芬奇调色剪辑)mac/win中文版

在影视制作领域&#xff0c;调色和剪辑是至关重要的环节&#xff0c;它们直接决定了作品的观感和质量。而Blackmagic Design DaVinci Resolve Studio18&#xff08;达芬奇调色剪辑&#xff09;作为业界领先的专业调色剪辑软件&#xff0c;以其出色的性能和强大的功能&#xff0…