MyBatis总结(3)---映射文件的元素配置

2023-10-27

MyBatis

1.简介
映射文件是MyBatis框架中十分重要的文件,可以说,MyBatis框架的强大之处就体现在映射文件的编写上。映射文件的命名一般是实体类名+Mapper.xml。例,Student类对应的映射文件是StudentMapper.xml文件。这个xml文件中包括Student类所对应的数据库表的各种增删改查sql语句。在映射文件中,< mapper>元素是映射文件的根元素,其他元素都是它的子元素:
在这里插入图片描述注:< mapper>元素有一个属性是namespace,它对应着实体类的Mapper接口,此接口就是MyBatis的映射接口,它对MapperXML文件中的sql语句进行映射。 例,

<mapper namespace="com.money.mappers.BookMapper">

2.主要元素
①< select>元素
< select>元素用于映射查询语句,它从数据库中读取出数据,并将读取的数据进行封装。例,

<select id="findAllBooks" resultMap="com.money.bean.Book">
	select id,name,price,sellnum
	from book
</select>

id属性的值要和实体类的Mapper映射接口中的方法名保持一致。resultMap属性为返回的结果集,如果该类没有配置别名就需要使用全限定名。resultType属性代表查询到的结果集中每一行所代表的数据类型。例,查询到学生结果集,则每一行代表一个学生对象,此时在映射接口中可以将该方法的返回值定为List< Student>,则MyBatis在底层会将查询到的每一个学生对象自动添加到该集合中,默认是ArrayList。如果映射方法的返回值为SortedSet<>,则默认是ThreeSet,此时实体类必须实现Comparable< T>接口,因为MyBatis底层创建集合对象是通过反射默认调用无参构造方法。当返回值是set<>则默认是HashSet。

当没有配置< resultMap>元素且列名和POJO中set方法去掉set后剩余的部分首字母小写不一致时就会出现映射不匹配的问题,此时可以通过给列名起别名的方法解决,别名必须和POJO中set方法去掉set后剩余的部分首字母小写得到的名字一致。但它的弊端就是只在当前select语句中有效,即只在当前映射方法中有效。配置< resultMap>元素可以有效解决这个问题。

< select>元素的常用属性:
在这里插入图片描述
②< insert>元素、< update>元素和< delete>元素
< insert>元素用于映射插入语句,在执行完元素中定义的SQL语句后,会返回一个表示插入记录数的整数。
< update>元素用于映射更新语句,< delete>元素用于映射删除语句。
以上元素的使用方式与select类似。例,

<insert id="insertBook" parameterType="Book">
	INSERT INTO book
	values(#{bID},#{bname},#{bprice},#{bnumber})
</insert>

parameterType为方法的参数类型,如果该类型没有配置别名就需要使用全限定名。此时的#{ }就相当于JDBC中sql语句的占位符?,它里面的值为parameterType类型get方法去掉get后剩余的部分首字母小写。
此时也是通过反射从parameterType类型中获取对应的值插入到数据库中。

③< resultMap>元素
< resultMap>元素表示结果映射集,是一个非常重要的元素。它的主要作用是定义映射规则、级联的更新以及定义类型转化器等。它可以引导MyBatis如何将结果映射为Java对象。例,

<!-- 将实体类与数据库列匹配 -->
<resultMap type="Book" id="BookResult">
	<id property="bID" column="id" />
	<result property="bname" column="name" />
	<result property="bprice" column="price" />
	<result property="bnumber" column="sellnum" />
</resultMap>

< resultMap>元素的type属性表示需要映射的POJO,如果此POJO没有配置别名那么这里要使用POJO的全限定名, id属性是这个resultMap的唯一标识,因为在一个XML文件中resultMap可能有多个。它有一个子元素< constructor>用于配置构造方法(当一个POJO中未定义无参的构造方法时,就可以使用< constructor>元素进行配置)。子元素< id>用于表示哪个列是主键,而< result>用于表示POJO和数据表中普通列的映射关系。property属性的值一般是POJO中set方法去掉set后剩余的部分首字母小写,column一般是数据表中的列名或列名的别名。当只有单表查询,且表中一部分或全部property和column的值完全相同时,< resultMap>元素那一部分或全部可以不用配置,此时select语句可以使用select *
配置property和type的原因:通过反射创建类对象。
注:attribute一般是类的成员变量名。

此外还有< association>和< collection>用于处理多表时的关联关系,而< discriminator>元素主要用于处理一个单独的数据库查询返回很多不同数据类型结果集的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis总结(3)---映射文件的元素配置 的相关文章

随机推荐

  • vue组件综述

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 组件 基本使用 组件是可复用的 Vue 实例 且带有一个名字 强烈推荐组件名字母全
  • 修改MySQL的配置文件

    目录 1 配置文件 2 修改的详细步骤 1 配置文件 配置文件 例如我们在打游戏的时候 发现有点卡 这是可能就会在设置中进行一些调整 画质设为低 分辨率设为1080p等 这些能够在设置中调整的设置项 就称为 配置 在MySQL中默认的字符集
  • Java基础.2

    循环结构 for while 及 do while while是最基本的循环 它的结构为 while 布尔表达式 循环内容 只要布尔表达式为 true 循环就会一直执行下去 实例 public class Test public stati
  • js将图片转base64两种方法

    第一种 Image canvas const getBase64Image src gt return new Promise resolve gt const img new Image img crossOrigin img src s
  • 软件需求的3个层次

    业务需求 业务需求 Business requirement 表示组织或客户高层次的目标 业务需求通常来自项目投资人 购买产品的客户 实际用户的管理者 市场营销部门或产品策划部门 业务需求描述了组织为什么要开发一个系统 即组织希望达到的目标
  • 计算机四级网络工程师(备考过程,避开误区,高效备考!)

    今年3月底考的计算机四级 想把考试的经验备考过程写在这里 供准备计算机四级的小伙伴参考哦 话不多说 直接上图 本人计算机相关专业 计算机四级网络工程师的操作系统 计算机网络都是计算机专业的四大科目之二 所以这两门课还是有一些基础的 不过这两
  • Nim游戏详解

    部 xu 分 duo 材料摘自百度百科 定义 Nim游戏 通常的Nim游戏的定义是这样的 有若干堆石子 每堆石子的数量都是有限的 合法的移动是 选择一堆石子并拿走若干颗 不能不拿 如果轮到某个人时所有的石子堆都已经被拿空了 则判负 因为他此
  • Unity 获取鼠标所在位置的UI及3D物体

  • 对数据库字符串定义

  • Python random库详解

    一 常用方法 在使用random 的时候需要先导入函数包 import random 以下是一些常用的方法 import random result1 random random 随机生成一个浮点数 0 1 result2 random r
  • 第37步 深度学习图像识别:CNN建模(Tensorflow)

    基于WIN10的64位系统演示 一 写在前面 1 深度学习图像识别的原理 我们思考一下 当你看到一张椅子的图片 你的大脑会告诉你这是个椅子 但你有没有想过 为什么你知道这是椅子 你的大脑是怎么做推论的 你可能会说因为椅子有腿 有座位 有靠背
  • 十四. Kubernetes 工作负载 之 Deployment

    目录 一 Deployment 基础解释 RC RS 解释 二 Deployment 的更新机制 版本回滚 滚动升级 三 资源限制与动态扩缩容 安装 Metrics server HPA 动态扩缩容 五 蓝绿部署与金丝雀部署 六 Deplo
  • mybatis报错lineNumber:31,columnNumber:17,元素类型为configuration的内容必须匹配解决方法

    在写一个mybatis测试demo时发现配置mybatis xml报错如下 org apache ibatis exceptions PersistenceException Error building SqlSession Cause
  • osx制作u盘安装盘

    官方教程 为了方便我直接把所需文件放在 目录 打开终端执行 cd sudo createinstallmedia volume Volumes hp x750w applicationpath Install OS X El Capitan
  • BP神经网络回归---房价预测

    xue 学 tu 途 Hello 各位小伙伴们大家早上好呀 这期 博主给大家分享如何用BP神经网络回归去拟合波士顿的房价数据 从而训练出一个可以预测波士顿房价的神经网络模型 神经网络回归 BP神经网络 回归
  • 第八章 linux系统引导过程及引导修复

    1 bios初始化 虚拟机可通过如下方法进入 调整默认启动 关闭selinux vim etc sysconfig selinux 2 磁盘引导 mbr 主引导记录 0磁道1扇区446 作用 记录grub2引导文件的位置 当mbr数据丢失系
  • Mybatis 只返回特定字段的方法

    参考地址 https blog csdn net menghuannvxia article details 82906341 mybatis中如果返回对象集合的话 会把对象中的所有字段都返回 如果表中字段很多而我只需要部分字段 有几种解决
  • mysql及sql基础语法笔记

    一 mysql初始工作 安装卸载 服务启动停止 登陆退出 dos里面 mysql u root p 123321 quit 语言规范 1 SQL 语言大小写不敏感 数据大小写是敏感的 2 SQL 可以写在一行或者多行 3 关键字不能被缩写也
  • Python复习

    类似 xxx 这种格式的变量是特殊变量 允许被直接引用 但是会被用作特殊用途 比如 author name 就是属于特殊变量 hello模块定义的文档注释也可以用特殊变量 doc 访问 我们自己编程定义的变量一般不会用这种变量名 类似 xx
  • MyBatis总结(3)---映射文件的元素配置

    MyBatis 1 简介 映射文件是MyBatis框架中十分重要的文件 可以说 MyBatis框架的强大之处就体现在映射文件的编写上 映射文件的命名一般是实体类名 Mapper xml 例 Student类对应的映射文件是StudentMa