Mapper的xml文件基础语法笔记,增删改查,遍历
文章目录1、sql 标签2、select 标签3、where标签4、insert 标签5、update 标签6、delete 标签7、set标签8、include 标签9、if标签10、trim标签11、foreach标签12、choose标签xml文件值比较处理1、sql 标签表示单纯的一条sql语句可以直接写一条可以执行的sql语句也可以写一条给其他sql语句引用的sql语句sqlidBase_Column_List!--mbg.generated--id, busi_object_id, busi_object_code, app_id, title, page_id, form_data, page_data, creator_id, updator_id, created_time, updated_time/sql2、select 标签表示这是一条查询语句NcdpFormDefineselectByBusiObjectId(LongbusiObjectId);//mapper接口中对应的方法selectidselectByBusiObjectIdparameterTypejava.lang.LongresultMapBaseResultMapselect * from ncdp_form_define where busi_object_id #{busiObjectId,jdbcTypeBIGINT}/select3、where标签如果where内如果没有任何语句where则直接去除比如下面这个例子如果if判定为false这时where里面没有语句则不会生成wherewhereiftestdepartmentChecks ! nullbu.department_id inforeachcollectiondepartmentChecksitemitemopen(close)separator,#{item}/foreach/if/wherewhere标签可以自动添加where同时处理sql语句中第一个and关键字如下面的sql语句第一个AND会被优化剔除!-- 代码块 2-4 --!-- 根据条件查询用户 --selectidqueryUserByWhereparameterTypeuserresultTypeuserSELECT id , gender ,nickname ,mobile ,avatar From dts_user!-- where标签可以自动添加where同时处理sql语句中第一个and关键字 --whereiftestgender ! nullAND gender #{gender}/ififtestmobile ! null and mobile ! AND mobile LIKE %${mobile}%/if/where/select4、insert 标签intinsert(NcdpFormDefinerecord);insertidinsertparameterTypecom.iwhalecloud.bassc.ncdp.entity.form.NcdpFormDefine!--mbg.generated--insert into ncdp_form_define (id, busi_object_id, busi_object_code, app_id, title, page_id, form_data, page_data, creator_id, updator_id, created_time, updated_time) values (#{id,jdbcTypeBIGINT}, #{busiObjectId,jdbcTypeBIGINT}, #{busiObjectCode,jdbcTypeVARCHAR}, #{appId,jdbcTypeBIGINT}, #{title,jdbcTypeVARCHAR}, #{pageId,jdbcTypeVARCHAR}, #{formData,jdbcTypeVARCHAR}, #{pageData,jdbcTypeVARCHAR}, #{creatorId,jdbcTypeBIGINT}, #{updatorId,jdbcTypeBIGINT}, #{createdTime,jdbcTypeTIMESTAMP}, #{updatedTime,jdbcTypeTIMESTAMP})/insert5、update 标签intupdateByPrimaryKeySelective(LcdpAppGroupInforecord);updateidupdateByPrimaryKeySelectiveparameterTypecom.iwhalecloud.bassc.ncdp.entity.form.NcdpFormDefine!--mbg.generated--update ncdp_form_definesetiftestbusiObjectId ! nullbusi_object_id #{busiObjectId,jdbcTypeBIGINT},/ififtestbusiObjectCode ! nullbusi_object_code #{busiObjectCode,jdbcTypeVARCHAR},/ififtestappId ! nullapp_id #{appId,jdbcTypeBIGINT},/ififtesttitle ! nulltitle #{title,jdbcTypeVARCHAR},/ififtestpageId ! nullpage_id #{pageId,jdbcTypeVARCHAR},/ififtestformData ! nullform_data #{formData,jdbcTypeVARCHAR},/ififtestpageData ! nullpage_data #{pageData,jdbcTypeVARCHAR},/ififtestcreatorId ! nullcreator_id #{creatorId,jdbcTypeBIGINT},/ififtestupdatorId ! nullupdator_id #{updatorId,jdbcTypeBIGINT},/ififtestcreatedTime ! nullcreated_time #{createdTime,jdbcTypeTIMESTAMP},/ififtestupdatedTime ! nullupdated_time #{updatedTime,jdbcTypeTIMESTAMP},/if/setwhere id #{id,jdbcTypeBIGINT}/update6、delete 标签表示这是一条删除语句intdeleteByPrimaryKey(LonggroupId);deleteiddeleteByPrimaryKeyparameterTypejava.lang.Long!--mbg.generated--delete from ncdp_form_define where id #{id,jdbcTypeBIGINT}/delete7、set标签感觉没啥用很垃圾。目前没发现它的用处intupdateByPrimaryKeySelective(LcdpAppGroupInforecord);updateidupdateByPrimaryKeySelectiveparameterTypecom.iwhalecloud.bassc.ncdp.entity.form.NcdpFormDefine!--mbg.generated--update ncdp_form_definesetiftestbusiObjectId ! nullbusi_object_id #{busiObjectId,jdbcTypeBIGINT},/ififtestbusiObjectCode ! nullbusi_object_code #{busiObjectCode,jdbcTypeVARCHAR},/ififtestappId ! nullapp_id #{appId,jdbcTypeBIGINT},/ififtesttitle ! nulltitle #{title,jdbcTypeVARCHAR},/ififtestpageId ! nullpage_id #{pageId,jdbcTypeVARCHAR},/ififtestformData ! nullform_data #{formData,jdbcTypeVARCHAR},/ififtestpageData ! nullpage_data #{pageData,jdbcTypeVARCHAR},/ififtestcreatorId ! nullcreator_id #{creatorId,jdbcTypeBIGINT},/ififtestupdatorId ! nullupdator_id #{updatorId,jdbcTypeBIGINT},/ififtestcreatedTime ! nullcreated_time #{createdTime,jdbcTypeTIMESTAMP},/ififtestupdatedTime ! nullupdated_time #{updatedTime,jdbcTypeTIMESTAMP},/if/setwhere id #{id,jdbcTypeBIGINT}/update8、include 标签sql语句设置一个idBase_Column_Listinclude通过这个id引用这个sql语句引用过程为字符串拼接NcdpFormDefineselectByBusiObjectId(LongbusiObjectId);//mapper接口中对应的方法sqlidBase_Column_List!--mbg.generated--id, busi_object_id, busi_object_code, app_id, title, page_id, form_data, page_data, creator_id, updator_id, created_time, updated_time/sqlselectidselectByBusiObjectIdparameterTypejava.lang.LongresultMapBaseResultMapselectincluderefidBase_Column_List/from ncdp_form_define where busi_object_id #{busiObjectId,jdbcTypeBIGINT}/select9、if标签表示updatedTime 不为null时标签中的内容拼接进sql语句iftestupdatedTime ! nullupdated_time,/if表示list不为空同时不为 nulliftestlist ! null and list.size()!0type 为 1 则为真iftesttype 1.toString()10、trim标签实际上就是表示剪切的意思对字符串进行稍微的处理prefix 给sql语句拼接的前缀suffix 给sql语句拼接的后缀prefixOverrides 去除sql语句前面的关键字或者字符该关键字或者字符由prefixOverrides属性指定假设该属性指定为AND当sql语句的开头为ANDtrim标签将会去除该ANDsuffixOverrides 去除sql语句后面的关键字或者字符该关键字或者字符由suffixOverrides属性指定intinsertSelective(LcdpAppGroupInforecord);insertidinsertSelectivekeyColumngroup_idkeyPropertygroupIdparameterTypecom.iwhalecloud.bassc.ncdp.entity.appManage.LcdpAppGroupInfouseGeneratedKeystrueinsert into ncdp_app_group_infotrimprefix(suffix)suffixOverrides,iftestorgId ! nullorg_id,/ififtestgroupName ! nullgroup_name,/ififtestsort ! nullsort,/ififtestcreatorId ! nullcreator_id,/ififtestcreatedTime ! nullcreated_time,/ififtestupdateId ! nullupdate_id,/ififtestupdateTime ! nullupdate_time,/if/trimtrimprefixvalues (suffix)suffixOverrides,iftestorgId ! null#{orgId,jdbcTypeBIGINT},/ififtestgroupName ! null#{groupName,jdbcTypeVARCHAR},/ififtestsort ! null#{sort,jdbcTypeSMALLINT},/ififtestcreatorId ! null#{creatorId,jdbcTypeBIGINT},/ififtestcreatedTime ! null#{createdTime,jdbcTypeTIMESTAMP},/ififtestupdateId ! null#{updateId,jdbcTypeBIGINT},/ififtestupdateTime ! null#{updateTime,jdbcTypeTIMESTAMP},/if/trim/insert11、foreach标签collection 表示传入的对象名默认为list如果需要更改需要加注解Param如果传入的是数组 collection“list” 改为 collection“array” 即可item 表示遍历的每个对象index表示索引open该语句以什么开始close以什么结束separator在每次进行迭代之间以什么符号作为分隔符voidupdateSort(ListLcdpAppGroupInfolist);updateidupdateSortparameterTypejava.util.Listforeachcollectionlistitemitemindexindexopencloseseparator;update ncdp_app_group_infosetsort #{item.sort}/setwhere group_id #{item.groupId}/foreach/update12、choose标签在这个例子中MyBatis会根据传入参数判断哪个条件满足然后只执行相应的块里的SQL片段。如果没有条件满足则执行块的内容。selectidgetUserDetailsBasedOnConditionparameterTypemapresultTypeUserSELECT * FROM userschoosewhentestusername ! nullWHERE username #{username}/whenwhentestemail ! nullWHERE email #{email}/whenotherwise!-- 如果以上条件都不满足可以定义一个默认行为或者干脆不做任何事情 --/otherwise/choose/selectxml文件值比较处理直接用转义包裹更直观![CATA[email#{email}]]原符号’替换符号lt;lt;gt;gt;amp;apos;quot;

相关新闻

深入解析C2000 SCI模块:中断、DMA与低功耗模式实战指南

深入解析C2000 SCI模块:中断、DMA与低功耗模式实战指南

1. 项目概述与核心价值串行通信接口(SCI)模块,对于任何一个在嵌入式领域摸爬滚打过的工程师来说,都像是一位熟悉的老朋友。它本质上是基于UART协议实现的异步串行通信硬件外设,是连接微控制器与外部世界最经典、最可靠…

2026/9/30 15:07:26 阅读更多 →
绿幕发灰、边缘闪烁、头发丝丢失?Runway抠像失败的7个隐性参数陷阱,今天必须改!

绿幕发灰、边缘闪烁、头发丝丢失?Runway抠像失败的7个隐性参数陷阱,今天必须改!

更多请点击: https://kaifayun.com 第一章:绿幕抠像失败的典型现象与根本归因 绿幕抠像(Chroma Keying)是影视制作与实时虚拟制播中的核心环节,但实践中常出现边缘锯齿、残留色溢、透明度断裂等异常表现。这些并非孤立…

2026/10/4 14:53:45 阅读更多 →
麒麟信安“一云多芯”解决方案,助力传统IT架构变革转型

麒麟信安“一云多芯”解决方案,助力传统IT架构变革转型

随着信息化进程的不断演变推进,各行各业的信息化水平均有显著提高,IT系统建设规模不断扩大、硬件设备需求逐渐增加,因此给数据安全管理和高效运维带来的压力不容小觑: 1.难防 每个人的数据均保存在本地,虽然大部分单位…

2026/10/2 9:03:32 阅读更多 →

最新新闻

插件机制深度解析:从加载失败到生命周期排查实战

插件机制深度解析:从加载失败到生命周期排查实战

如果你常年混迹技术社区,会发现“plugins”这个词的出现频率高得吓人——有人问 IAR plugins 是干什么的,有人贴出failed to load plugins web boot: 2 entries did not activate linxin666/dsh-p这种报错求助,还有人讨论 MusicFree 的插件到…

2026/10/4 14:53:41 阅读更多 →
插件系统工作原理与加载失败排查:从日志到实战

插件系统工作原理与加载失败排查:从日志到实战

我昨天帮一个朋友排查他本地开发环境的问题,打开他的应用日志,一排一模一样的红字:failed to load plugins web boot: 2 entries did not activate。他问我这到底什么意思,是不是电脑中毒了。我解释了半天,后来发现不仅…

2026/10/4 14:53:41 阅读更多 →
第三方软件测评全解析:测什么、怎么看、怎么选

第三方软件测评全解析:测什么、怎么看、怎么选

1. 软件被自夸坑过的人,才懂第三方测评的价值软件测评这行干得久了,你会明白一个道理:一款软件好不好,开发方说了不算,老板说了也不算,最终能服众的,是利益相关方之外的第三方站出来说句话。这就…

2026/10/4 14:53:41 阅读更多 →
cppcheck invalidPrintfArgType_n 检查器深入解析:printf `%n` 实参必须是可写指针

cppcheck invalidPrintfArgType_n 检查器深入解析:printf `%n` 实参必须是可写指针

开发工具静态分析代码质量质量保障 【免费下载链接】cppcheck static analysis of C/C code 项目地址: https://gitcode.com/gh_mirrors/cpp/cppcheck 点击查看 免费下载 本篇文章围绕 cppcheck 静态分析器中的 invalidPrintfArgType_n 检查器展开:它专…

2026/10/4 14:53:41 阅读更多 →
Spring Boot全栈实践:敦煌文化旅游管理系统的设计与实现

Spring Boot全栈实践:敦煌文化旅游管理系统的设计与实现

做毕设或者练手项目选管理系统的人很多,但真正能把一个系统做成"有的讲、拿得出手、面试能聊"的,其实不多。今天想拆解的这个敦煌文化旅游管理系统,就是典型的Spring Boot全栈项目——围绕敦煌这一个大IP,把旅游攻略、酒…

2026/10/4 14:53:41 阅读更多 →
基于springboot + vue人力资源管理系统(源码+数据库+文档)

基于springboot + vue人力资源管理系统(源码+数据库+文档)

人力资源管理系统 目录 基于springboot vue人力资源管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue人力资源管理系统 一、前言 博主介绍&…

2026/10/4 14:52:41 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →