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/7/22 15:42:59 阅读更多 →
绿幕发灰、边缘闪烁、头发丝丢失?Runway抠像失败的7个隐性参数陷阱,今天必须改!

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

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

2026/7/23 17:52:12 阅读更多 →
麒麟信安“一云多芯”解决方案,助力传统IT架构变革转型

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

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

2026/7/22 15:42:58 阅读更多 →

最新新闻

Github项目分享——免费的编程中文书籍索引

Github项目分享——免费的编程中文书籍索引

免费的编程中文书籍索引 祝大家除夕快乐,今天给大家推荐一个编程电子书的项目,因为计算机专业的书普遍量大且贵,所以这个项目可以让大家节约一定的费用,更好的学习编程。 项目地址 https://github.com/justjavac/free-programmi…

2026/7/23 17:52:21 阅读更多 →
xss-labs搭建及通关攻略

xss-labs搭建及通关攻略

目录 xss-labs搭建 xss-labs通关攻略 level-1 level-2 level-3~level-4 level-5 level-6 level-7 level-8 level-9 level-10 level-11~level-13 level-14 level-15 level-16 level-17~level-18 level-19~level-20 xss-labs搭建 (1)首…

2026/7/23 17:52:21 阅读更多 →
OpenWrt搭建time machine软路由搭建苹果时间机器服务器

OpenWrt搭建time machine软路由搭建苹果时间机器服务器

硬件:r4s刷的openwrt固件 机械硬盘 软件:netatalk avahi 1.1 将硬盘连接到软路由并挂载 1.2 此步骤为建议步骤,将存储磁盘格式化为hfs可在还原时直接通过usb连接mac(这将极大加快mac从时间机器恢复的速度)。将外置驱动器插入 Mac #此命令…

2026/7/23 17:52:21 阅读更多 →
RAG检索优化:混合检索与查询扩展技术详解

RAG检索优化:混合检索与查询扩展技术详解

1. RAG检索优化方法概述在构建基于大语言模型(LLM)的问答系统时,检索增强生成(Retrieval-Augmented Generation, RAG)已成为主流技术方案。RAG通过将外部知识检索与文本生成相结合,有效解决了LLM知识固化、幻觉等问题。但实际应用中,检索环节…

2026/7/23 17:52:21 阅读更多 →
深入解析多层神经网络MLP:原理、实现与应用

深入解析多层神经网络MLP:原理、实现与应用

1. 多层神经网络MLP:从理论到实践的深度解析第一次接触多层感知机(MLP)时,我被它简洁的结构和强大的表达能力所震撼。作为深度学习领域最基础的网络架构之一,MLP不仅是理解神经网络的起点,更是许多复杂模型…

2026/7/23 17:52:21 阅读更多 →
游戏账号交易APP定制开发游戏账号交易系统制作

游戏账号交易APP定制开发游戏账号交易系统制作

随着游戏行业规模增加,热度起来以后,目前游戏账号交易需求量也在随着游戏热度上涨,像螃蟹、氪金兽、盼之等一些知名的游戏账号交易的平台业务量也在增加。像一些小的账号交易工作室业务量也在增加,随着单量的增加,再用…

2026/7/23 17:51:21 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻