- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
MyBatis实现MySQL的动态SQL写法
1.Mybatis动态sql是做什么的?
Mybatis动态sql可以让我们在Xml映射文件内,以标签的形式编写动态sql,完成逻辑判断和动态拼接sql的功能。
2.Mybatis的9种动态sql标签有哪些?
3.动态sql的执行原理?
原理为:使用OGNL从sql参数对象中计算表达式的值,根据表达式的值动态拼接sql,以此来完成动态sql的功能。
MyBatis标签
1.if标签:条件判断
MyBatisif类似于Java中的if语句,是MyBatis中最常用的判断语句。使用if标签可以节省许多拼接SQL的工作,把精力集中在XML的维护上。
1)不使用动态sql
if语句使用方法简单,常常与test属性联合使用。语法如下:
if?test=判断条件????SQL语句/if
2)使用动态sql
上面的查询语句,我们可以发现,如果?#{username}?为空,那么查询结果也是空,如何解决这个问题呢?使用if来判断,可多个if语句同时使用。
以下语句表示为可以按照网站名称(name)或者网址(url)进行模糊查询。如果您不输入名称或网址,则返回所有的网站记录。但是,如果你传递了任意一个参数,它就会返回与给定参数相匹配的记录。
2.where+if标签
where、if同时使用可以进行查询、模糊查询
注意,if失败后,?where?关键字只会去掉库表字段赋值前面的and,不会去掉语句后面的and关键字,即注意,where?只会去掉if?语句中的最开始的and关键字。所以下面的形式是不可取的
这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND或OR开头的,则它会剔除掉。
3.set标签
set可以用来修改
4.choose(when,otherwise)语句
有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用choose标签可以解决此类问题,类似于Java的switch语句
也就是说,这里我们有三个条件,id、username、sex,只能选择一个作为查询条件
如果id不为空,那么查询语句为:select*fromuserwhereid=?
如果id为空,那么看username是否为空,如果不为空,那么语句为?select*fromuserwhereusername=?;
如果username为空,那么查询语句为?select*fromuserwheresex=?
5.trim
trim标记是一个格式化的标记,可以完成set或者是where标记的功能
①、用trim改写上面第二点的if+where语句
prefix:前缀
prefixoverride:去掉第一个and或者是or
②、用trim改写上面第三点的if+set语句
suffix:后缀
suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)
③、trim+if同时使用可以添加
6.MyBatisforeach标签
foreach是用来对集合的遍历,这个和Java中的功能很类似。通常处理SQL中的in语句。
foreach元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。它也允许你指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素也不会错误地添加多余的分隔符
你可以将任何可迭代对象(如List、Set等)、Map对象或者数组对象作为集合参数传递给foreach。当使用可迭代对象或者数组时,index是当前迭代的序号,item的值是本次迭代获取到的元素。当使用Map对象(或者Map.Entry对象的集合)时,index是键,item是值\o/s?__biz=MzI3ODcxMzQzMw==mid=2247566696idx=2sn=7ab7f0b5fd243e5834e34da9037df5b5chksm=eb51405edc26c94803ede8b9c0f8d155a4af2126a7668d0844fffbfd07abb1a1137ac563caaescene=21#wechat_redirect。
整合案例
xml
?xml?version=1.0?encoding=UTF-8??
!DOCTYPE?mapper
????????PUBLIC?-////DTD?Mapper?3.0//EN
??
您可能关注的文档
- 2018-2019年必威体育精装版人教版九年级化学下册第十单元-酸和碱期中试卷A4打印.docx
- 2019-2020年度人教版八年级物理下册第十章浮力月考试卷精品.docx
- 2021-2022学年度八年级数学下册模拟测试卷-614.docx
- 2021-2022学年度八年级数学下册模拟测试卷-2221.docx
- 2021-2022学年度八年级数学下册模拟测试卷-3063.docx
- 2021-2022学年度八年级数学下册模拟测试卷-6961.docx
- DeepSeek提示词使用技巧.docx
- Java实现责任链策略模式优雅处理多级请求的方式.docx
- JAVA实战订单超时自动取消设计方案.docx
- Java线程池原理详解.docx
- 《GBT36067-2018信息与文献引文数据库数据加工规则》(2025版)深度解析.pptx
- 《GBT36112-2018政务服务中心服务现场管理规范》(2025版)深度解析.pptx
- 2025届内蒙古呼和浩特市高三上学期第一次质量监测-英语试卷(含答案).docx
- 《GBT36068-2018中国机读馆藏格式》(2025版)深度解析.pptx
- 生产管理和成本管理战略与技巧实务专题.pptx
- 企业固定资产管理培训.pptx
- 周志华《西瓜书》课件.pptx
- 《GBT36113-2018政务服务中心服务投诉处置规范》(2025版)深度解析.pptx
- 企业项目管理的特征.ppt
- 护理交接班优秀个案分析.pptx
最近下载
- (二模)南京市、盐城市2025届高三年级第二次模拟考试 数学试题卷(含答案).pdf
- 建筑工程图集 07MS101:市政给水管道工程及附属设施.pdf VIP
- 《形势与政策2025春》题库答案(10).doc VIP
- 初中英语课堂小组合作学习研究课题.docx VIP
- 绳索取芯培训(概括).ppt
- Shimano禧玛诺渔具 电动轮PLAYS 3000 3000XP(03980 03620)说明书.pdf
- 大学语文 课件(何)18看蒙娜丽莎看.ppt
- 2024年贵州全国高中数学联赛预赛竞赛数学试卷.doc
- 预制场专项安全检查表.docx
- Unit1 第2课时Speed up Fuel up(教学设计)-三年级英语下册(外研版三起2024).docx
文档评论(0)