in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。
第①种场景:动态SQL之-if语句
if 标签通常用于 where语句、update语句、insert语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。
select * from emp comm is NULL and comm = #{comm} and job = #{job}
注明:where 元素只会在子元素返回任何内容的情况下才插入 “where” 子句。而且,若子句的开头为 “and” 或 “or”,where 元素也会将它们去除。
第②种场景:动态SQL之-choose(when,otherwise) 语句
有时候,我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。
select * from emp job = #{job} comm = #{comm} ename = #{ename}
第③种场景:动态SQL之-if+set 语句
set 元素可以用于动态包含需要更新的列,忽略其它不更新的列。比如:
update emp ename=#{ename}, job=#{job}, sal=#{sal}, comm=#{comm} where empno=#{empno}
这个例子中,set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)。
第④种场景:动态SQL之-foreach语句
动态 SQL 的另一个常见使用场景是对集合进行遍历(尤其是在构建 IN 条件语句的时候)。比如:
delete from emp where empno in #{empno}
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);List empnos = new ArrayList();empnos.add(7369);empnos.add(7654);empnos.add(7698);int result = empMapper.delEmp(empnos);
foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。它也允许你指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素也不会错误地添加多余的分隔符,看它多智能!
提示 你可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象作为集合参数传递给 foreach。当使用可迭代对象或者数组时,index 是当前迭代的序号,item 的值是本次迭代获取到的元素。当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。
第⑤种场景:动态SQL之-trim语句
trim标记是一个格式化的标记,可以完成set或者是where标记的功能
select * from emp and comm is NULL and comm = #{comm} and job = #{job}
第⑥种场景:动态SQL之-SQL片段
有时候可能某个 sql 语句我们用的特别多,为了增加代码的重用性,简化代码,我们需要将这些代码抽取出来,然后使用时直接调用。比如:假如我们需要经常根据用户名和性别来进行联合查询,那么我们就把这个代码抽取出来,如下:
and ename = #{ename} and job = #{job}
引用 sql 片段
select * from emp
in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满相关推荐
- Qt5开发从入门到精通——第三篇三节(窗口篇——停靠窗口)
欢迎小伙伴的点评✨✨,相互学习.互关必回.全天在线
- 视频教程-Oracle从入门到精通全套视频教程之SQL与PLSQL(四)-Oracle
Oracle从入门到精通全套视频教程之SQL与PLSQL(四) Oracle DBA,熟悉Unix操作系统,精通Oracle数据库. 曾任职某大型金融IT公司,负责银行领域数据库构建与运维,维护大量银 ...
- 视频教程-SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版)-Oracle
SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版) 某公司区域交付运营总监,丰富的项目管理经验,带过1个亿级项目,千万级项目10余个. 陈志文 ¥118.00 立即订阅 扫码下载「CSD ...
- Redis从入门到精通:初级篇(转)
原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...
- MySQL零基础从入门到精通(函数篇)
MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...
- php flock 都是true_PHP从入门到精通(三)PHP语言基础
PHP从入门到精通(三)PHP语言基础 一.PHP标记风格 PHP支持4种标记风格 1.XML风格.(推荐使用) <?phpecho "这是XML分割的标记"; ?> ...
- 3分钟入门python_3分钟学完Python,直接从入门到精通「史上最强干货库」
作为帅气小编,我已经把python一些模块的甩在这儿了qwq,只要你拿到这些干货,包你玩转python,直接冲向"大佬"的段位,如果已经学了C或者C++或者说如果你需要你的一段关键 ...
- CUDA从入门到精通(三):必备资料
CUDA从入门到精通(三):必备资料 2013-07-23 09:20 3676人阅读 评论(0) 收藏 举报 分类: GPU(29) 版权声明:本文为卜居原创文章,未经博主允许不得转载.卜居博客 ...
- GPU 编程入门到精通(三)之 第一个 GPU 程序
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...
最新文章
- 著名作者网站论文下载
- 深度学习(十)keras学习笔记
- Analysis of Cloud Computing Architectures阅读笔记--提出了Screen虚拟化方法
- 自定义封装 banner 组件
- python海龟交易策略_Python的海龟交易法
- jeecg3.8popup弹出窗口触发失去焦点事件,引发验证弹窗,影响体验问题的解决办法
- Jetbrain系列IDE设置
- python开三次方根函数_Python 中,给 -8 开三次方根出来的是一个虚数,而不是 -2,这怎么办?...
- Windows自带利器:Rundll.exe高级应用
- windows驱动签名
- tkinter中控件menu的两种组织方法
- 情人节适合送礼的数码好物有哪些?心意满满的数码好物清单
- 域控制器是什么及其功能
- x265笔记_1_下载调试
- 机器学习python中train_test_split()函数进行数据集分割
- GOF23设计模式-创建型模式4-原型模式
- 读我(Readme)
- Python基础学习_函数数def_返回值及返回值类型_函数块
- 市场调研报告-全球与中国溶剂净化器市场现状及未来发展趋势
- C++描述 LeetCode 485. 最大连续1的个数
热门文章
- 6款html5模板下载
- JSP tomcat 更新不生效
- ASP.NET中常用的26个优化性能方法(1-10)
- java map的遍历
- oracle 经纬度算距离,根据经纬度诀别用java和Oracle存储过程计算两点距离
- html调用js页面显示不出来了,JS代码文件调用显示乱码,直接写在html页面的里可以调用,但是单独放在js文件里不能调用...
- [转载] java注释
- 怎么查看我的php版本,怎样查看php版本
- 查看 mysql 状态_查看mysql状态的常用命令
- kotlin 查找id_Kotlin程序查找Sphere的体积