Mybatis 映射配置文件(mepper配置文件的标签详解)

本文详细介绍了Mybatis映射配置文件中的各类标签,包括定义SQL语句、配置关联关系、结果集映射、动态SQL、格式化输出、定义常量及其他。重点讲解了查询、修改、删除、新增操作的标签使用,以及相关属性配置,如resultMap、if、where、set等,帮助理解Mybatis的映射配置原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis 映射配置文件的标签总结:

一、标签分类

1.定义SQL语句

insert标签delete标签update标签select标签

2.配置关联关系

关联的是集合:collection标签 ;关联的是单个对象 :association标签

两者都是用于resultMap返回关联映射

标签属性:
1.property resultMap返回实体类中字段和result标签中的property一样

2.column 数据库的列名或者列标签别名,是关联查询往下一个语句传送值。注意: 在处理组合键时,您可以使用column=“{prop1=col1,prop2=col2}”这样的语法,设置多个列名传入到嵌套查询语句。这就会把prop1和prop2设置到目标嵌套选择语句的参数对象中。

3.javaType 一般为ArrayList或是java.util.List

4.ofType 要解决关联集合的映射 ofType 是指定集合元素的类型。java的实体类,对应数据库表的列名称,即关联查询select对应返回的类

5.select执行一个其他映射的sql语句返回一个java实体类型

3.配置java对象属性与查询结果集中列名的对应关系

resultMap标签:

通过resultMap来配置关联查询的结果

属性:
id 唯一标识 ;
type返回类型;
extends 继承别的resultMap(可选)

关联其他标签:
id 设置主键使用,使用此标签配置映射关系(可能不止一个)
result一般属性的配置映射关系,一般不止一个
association 关联一个对象使用
collection 关联一个集合使用

4.控制动态SQL拼接

foreach标签

属性:
collection循环的集合。传的是集合为list,数组为array, 如果是map为java.util.HashMap
item 循环的key
index 循环的下表顺序
open 循环的开头
close 循环结束
separator 循环的分隔符

if标签

基本都是用来判断值是否为空,注意Integer的判断,mybatis会默认把0变成 ‘’

choose标签

5.格式化输出

  • where标签:

where用来去掉多条件查询时,开头多余的and(可配合if标签使用)

  • set标签:

当在update语句中使用if标签时,如果前面的if没有执行,则会导致逗号多余错误。
使用set标签可以将动态的配置SET 关键字,并且去除追加到条件末尾的任何不相关的逗号。
没有使用if标签时,如果有一个参数为null,都会导致错误。

  • trim标签:

全能的,trim标记是一个格式化的标记,可以完成set或where标记的功能

属性:
prefixOverridessuffixOverrides表示覆盖内容,如果只有这两个属性表示删除内容
prefix、suffix 表示再trim标签包裹部分的前面或后面添加内容(注意:是没有prefixOverrides,suffixOverrides的情况下)

6.定义常量

  • sql标签:

定义一些常用的sql语句片段

7.其他

  • include标签:

引用其他的常量,通常和sql一起使用

二、标签应用

1.查询<select> 标签用于定义查询

  • 查询返回list 在这里插入图片描述

  • 当map 作为参数时 映射配置为#{key}
    特殊符号的处理
    方式1:使用转义字符
    方式2:使用 CDATA 标记。

<![CDATA[内部写包含特殊字符的内容]]>

在这里插入图片描述
在这里插入图片描述

2.修改<update> 标签用于定义修改

  • 在这里插入图片描述

传参异常: org.apache.ibatis.binding.BindingException:

Parameter ‘password’ not found. Available parameters are [arg1, arg0, param1, param2]

  • 在这里插入图片描述

修改方法:
mepper接口传递参数时:
(1)内置参数名是arg(索引) 从0开始.
(2)内置参数名是param(序号) 从1开始.

  • 在这里插入图片描述

(3)按照命名参数来传递 使用mybatis框架的@Param 注解

  • 注解绑定好之后, mapper配置文件中可以按照名称来配置了。在这里插入图片描述

3.删除<delete> 标签用于定义删除

  • 参数个数只有一个的时候 标签里的#{ }大括号随便写
    *在这里插入图片描述

4.新增<insert> 标签用于定义新增。

标签属性:

id:设置为接口的方法名。

parameterType:mybatis注册的别名可以不写。自己 定义的别名要标注

useGeneratedKeys="true"表示使用数据库中自动生成的主键回填实体对象

keyProperty:对象的主键即指定实体的主键对应的属性

keyColumn:数据库主键即指定数据库中的主键列的名字

  • 参数是一个对象的时候 标签里的#{ }大括号里必须是对象的属性
    在这里插入图片描述

5.增insert/ 改update/删delete共同的属性

  • id唯一的名称,对应dao中mapper的接口方法的名称

  • parameterType 将要传入语句的参数的完全限定类名或别名(可以自己注册)。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。

  • flushCache 将其设置为 true,表示是否会刷新缓存,即任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:true(对应插入、更新和删除语句)。

  • timeout 指定超时时间,单位是秒。默认未设置,使用驱动的设置值。即这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。

  • statementType STATEMENT,PREPARED 或 CALLABLE 的一个。默认值:PREPARED。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,当需要访问存储过程时,考虑使用CALLABLE

  • useGeneratedKeys(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server这样的关系数据库管理系统的自动递增字段, oracle使用序列是不支持的,通过selectKey可以返回主键),默认值:false。

  • keyProperty (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

  • keyColumn(仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

  • databaseId 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值