Mybatis的XML配置

MyBatis 是一个持久层框架,通过 XML 配置文件来定义 SQL 映射和结果的映射规则。以下是关于 MyBatis XML 配置文件的详细说明:

  1. 基本结构

XML 配置文件通常包含 <mapper><resultMap><typeAliases> 等元素。
2. mapper

定义 SQL 映射,包括 SQL 语句、参数类型、返回值类型等。

* `<insert>`: 用于插入数据。  
* `<select>`: 用于查询数据。  
* `<update>`: 用于更新数据。  
* `<delete>`: 用于删除数据。

3. resultMap

定义结果集的映射规则,包括列名、属性名、类型等。
4. typeAliases

定义别名,用于简化 Java 类型名称。
5. 参数映射

通过 parameterType 属性来指定传入参数的类型。支持多种类型,如基本类型、JavaBean、Map、数组或集合等。
6. 结果映射

通过 resultType 属性来指定返回结果的类型。支持多种映射方式,如单个列到单一属性、单个列到多个属性、多个列到单个属性等。
7. 动态 SQL

MyBatis 支持动态 SQL,允许根据条件构建不同的 SQL 语句。例如使用 <if><choose><when><otherwise> 等标签来动态生成 SQL 语句。
8. XML 配置文件的位置

通常放在项目的资源文件夹下,例如 src/main/resources。文件名通常为 mybatis-config.xml,但可以根据项目需要自定义。
9. 其他属性

除了上述提到的属性外,还有其他一些常用属性,如 id(唯一标识符)、parameterMapsql 等。

10.命名空间 (namespace)

namespace 属性是用来区分不同的 mapper,其值通常是对应的接口的全限定名。在 XML 文件中,所有的 <select><insert><update><delete> 语句都会放在这个 namespace 下。
11. 别名 (typeAliases)

使用 typeAliases 标签可以为 Java 类型定义别名,简化 XML 文件中的类型名称。例如:

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

在 XML 文件中,可以使用 User 作为 com.example.model.User 的别名。
12. 事务管理器 (transactionManager)

在 mybatis-config.xml 中,你可以配置事务管理器,指定事务管理器类型和数据源。例如:

<transactionManager type="JDBC"/>  
<dataSource type="POOLED">  <!-- 数据源配置 -->  
</dataSource>

13.环境配置 (environments)

使用 environments 标签来配置 MyBatis 的运行环境,例如:

<environments default="development">  <environment id="development">  <transactionManager type="JDBC"/>  <dataSource type="POOLED">  <!-- 数据源配置 -->  </dataSource>  </environment>  
</environments>

14.别名配置 (typeAliasesRegistry)

MyBatis 支持全局类型别名配置,可以通过 typeAliasesRegistry 标签来配置。这样,你就可以在整个 MyBatis 配置中使用定义的别名。例如:

<typeAliasesRegistry alias="MyTypeAlias" type="com.example.TypeAliasRegistry"/>

15.插件 (plugins)

MyBatis 允许你使用插件来扩展其功能。通过在 mybatis-config.xml 中配置插件,你可以在 MyBatis 的生命周期中插入自定义逻辑。例如:

<plugins>  <plugin interceptor="com.example.MyInterceptor">  <!-- 插件参数 -->  </plugin>  
</plugins>

16.XML 映射器 (mappers)
除了在 mybatis-config.xml 中定义映射器外,还可以通过在 classpath 下放置 XML 文件来定义映射器,然后在 mybatis-config.xml 中使用 <mappers> 标签引用这些文件。例如:

<mappers>  <mapper resource="com/example/mappers/ExampleMapper.xml"/>  
</mappers>

17. 注意事项

  • 当使用动态 SQL 时,要确保生成的 SQL 是有效的,避免 SQL 注入等安全问题。
  • 根据项目需求和数据库特性,合理使用 MyBatis 的各种功能和特性。
  • 在处理复杂的数据结构或关系时,使用 <association> 和 <collection> 等标签来处理一对一、一对多或多对多关系。

18.示例
给出了一个简单的 MyBatis XML 配置文件示例,包括插入、查询、更新和删除操作。通过这个示例,可以了解如何在 MyBatis 中定义基本的 CRUD 操作。

19.总结
XML 配置文件是 MyBatis 中的重要组成部分,通过合理地使用各种元素和属性,可以构建出高效、灵活的数据库访问层。建议根据实际项目需求仔细研究并合理使用 MyBatis 的各种功能和特性。

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

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

相关文章

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL&#xff08;Not Only SQL&#xff09;即不仅仅是SQL&#xff0c;泛指非关系型的数据库&#xff0c;它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;…

(免费领源码)java#Springboot#mysql旅游景点订票系统68524-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

网络安全02--负载均衡下的webshell连接

目录 一、环境准备 1.1ubentu虚拟机一台&#xff0c;docker环境&#xff0c;蚁剑 1.2环境压缩包&#xff08;文件已上传资源&#xff09;&#xff1a; 二、开始复原 2.1上传ubentu&#xff1a; 2.2解压缩 2.3版本20没有docker-compose手动下载&#xff0c;包已上传资源 …

人类基因组计划发现的8大真相

人类基因组计划是科学史上重要的里程碑事情。该计划的成功&#xff0c;不仅开启了人类了解自身的旅程&#xff0c;而且成为了国际科技合作的典范。对于人类基因组&#xff0c;发现了以下 8 个事实。 1. 人类基因组约有 20300 个蛋白质编码基因。这与最初预估的 30000 ~ 40000 个…

pytest教程-7-用例前后置方法

上一小节&#xff0c;我们学习了pytest跳过测试用例的方法&#xff0c;本小节我们讲解一下pytest用例的前后置方法。 在unittest中就有前置setup和后置teardown来处理测试用例执行前的准备工作&#xff08;浏览器驱动实例化&#xff0c;数据库连接等&#xff09;以及执行后的处…

JS之隐式转换与布尔判定

大家思考一下 [ ] [ ] &#xff1f; 答案是空字符串 为什么呢&#xff1f; 当做加法运算的时候&#xff0c;发现左右两端存在非原始类型&#xff0c;也就是引用类型对象&#xff0c;就会对对象做隐式类型转换 如何执行的&#xff1f;或者说怎么查找的&#xff1f; 第一步&…

IntelliJ IDE 插件开发 | (五)VFS 与编辑器

系列文章 IntelliJ IDE 插件开发 |&#xff08;一&#xff09;快速入门IntelliJ IDE 插件开发 |&#xff08;二&#xff09;UI 界面与数据持久化IntelliJ IDE 插件开发 |&#xff08;三&#xff09;消息通知与事件监听IntelliJ IDE 插件开发 |&#xff08;四&#xff09;来查收…

【GitHub项目推荐--不错的 React 开源项目】【转载】

用 React Flow 连接你的想法 用 React Flow 连接你的想法&#xff0c;这是一个高度可定制的库&#xff0c;基于 React 用于构建基于节点的 交互式 UI、编辑器、流程图和图表。 开源地址&#xff1a;https://github.com/wbkd/react-flow Bulletproof React 一个简单、可扩展且…

Xmind安装到指定目录

Xmind安装到指定目录 默认情况下安装包自动引导安装在C盘&#xff08;注册表默认位置&#xff09; T1:修改注册表&#xff0c;比较麻烦 T2:安装时命令行指定安装位置&#xff0c;快捷省事 1&#xff09;下载安装包&#xff08;exe可执行文件&#xff09; 2&#xff09;安装…

PyTorch深度学习实战(33)——条件生成对抗网络(Conditional Generative Adversarial Network, CGAN)

PyTorch深度学习实战&#xff08;33&#xff09;——条件生成对抗网络 0. 前言1. 条件生成对抗网络1.1 模型介绍1.2 模型与数据集分析 2. 实现条件生成对抗网络小结系列链接 0. 前言 条件生成对抗网络 (Conditional Generative Adversarial Network, CGAN) 是一种生成对抗网络…

IP报文格式(全网最详细)

IP报文格式 报文格式 图1 IP头格式 表1 IP头字段解释 字段长度含义Version4比特 4&#xff1a;表示为IPV4&#xff1b;6&#xff1a;表示为IPV6。IHL4比特首部长度&#xff0c;如果不带Option字段&#xff0c;则为20&#xff0c;最长为60&#xff0c;该值限制了记录路由选项。…

AutoGen实战应用(二):多代理协作(Multi-Agent Collaboration)

AutoGen是微软推出的一个全新工具&#xff0c;它用来帮助开发者创建基于大语言模型(LLM)的复杂应用程序. AutoGen能让LLM在复杂工作流程启用多个角色代理来共同协作完成人类提出的任务。在我之前的一篇博客: AutoGen实战应用(一)&#xff1a;代码生成、执行和调试 中我们通过一…

Linux如何配置磁盘(自动)挂载?

一些用户喜欢把开机自启动的命令&#xff08;包含磁盘挂载&#xff09;放在/etc/rc.local中。但是由于rc.local中的内容是顺序执行的&#xff0c;一些执行异常、文件权限、环境变量等问题&#xff0c;都可能导致rc.local中的命令没办法开机自启动&#xff0c;所以在磁盘挂载的开…

【RabbitMQ】交换机的概念及使用

一、引言 1、什么是交换机 RabbitMQ中&#xff0c;交换机是一个核心概念&#xff0c;主要用来将生产者生产出来的消息&#xff0c;传送到对应的队列中。实际上&#xff0c;生产者生产的消息从不会直接发送到队列&#xff0c;而是发送到交换机。交换机一方面接收来自生产者的消…

SpringBoot项目配置SSL后,WebSocket连接失败的解决方案

SpringBoot项目配置SSL后&#xff0c;WebSocket连接应使用wss协议&#xff0c;而不是ws协议。在前端配置WebSocket时&#xff0c;URL以wss://开头。

嵌入式学习第十二天

8.数组指针和指针数组&#xff08;2&#xff09;: &#xff08;1&#xff09;指针数组&#xff1a; int *a[5]; char *str[5]; 指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作 二维数组主要用来存储字符串数组…

Git(7)之提交消息模板

Git基础之提交消息模板 Author&#xff1a;onceday date&#xff1a;2024年1月26日 满满长路有人对你微笑过嘛… 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客 文章目录 Git基础之提交消息模板1. 设置提交信息1.1 设置用户名和邮箱信息1.2 设置默认编辑器1.3…

Nodejs前端学习Day3_准备工作

妈的&#xff0c;这几天真tm冷&#xff0c;前天上午还下了一整天的雪&#xff0c;大雪 文章目录 前言一、Node.js简介1.1何为1.2有什么 二、Node.js可以做什么三、学习路线四、下载nodejs4.1小坑记录4.2LTS和Current版本的不同 五、什么是终端六、在nodejs中执行js代码七、powe…

Kubernetes(K8S)各种攻击方法

1. 准备工作 1.1. metarget使用 项目地址(教程):https://github.com/Metarget/metarget/blob/master/README-zh.md 注意:推荐在Ubuntu 18.04(推荐)安装。 1.1.1. 安装metarget git clone https://github.com/Metarget/metarget.git cd metarget/ sudo apt install pyt…

[BUUCTF]-PWN:hitcon2014_stkof解析

又是一道堆题&#xff0c;先看保护 关键信息&#xff0c;64位&#xff0c;没开pie。再看ida 大致就是alloc创建堆块&#xff0c;free释放堆块&#xff0c;fill填充堆块内容&#xff0c;以及一个看起来没啥用的函数&#xff0c;当然我也没利用这个函数去解题 这里有两种解法 解…