Java知识Mybatis的特性详解动态SQL,拿走不谢
Mybatis的特性详解——动态SQL1.MyBatis if标签:条件判断 2.MyBatis choose、when和otherwise标签 5.MyBatis foreach标签 仰天大笑出门去,我辈岂是蓬蒿人
动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态 SQL 恰好解决了这一问题,可以根据场景动态的构建查询。
动态 SQL 只有几个基本元素,与 JSTL 或 XML 文本处理器相似,十分简单明了,大量的判断都可以在 MyBatis 的映射 XML 文件里配置,以达到许多需要大量代码才能实现的功能。
好处: :动态 SQL 大大减少了编写代码的工作量,更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 一、动态sql的元素
MyBatis 的动态 SQL 包括以下几种元素,如下表所示
1.MyBatis if标签:条件判断
MyBatis if 类似于 Java 中的 if 语句,是 MyBatis 中最常用的判断语句。使用 if 标签可以节省许多拼接 SQL 的工作,把精力集中在 XML 的维护上。 if 语句使用方法简单,常常与 test 属性联合使用。
语法如下: SQL语句
当判断条件为 true 时,才会执行所包含的 SQL 语句。
最常见的场景是在 if 语句中包含 where 子句,例如。
以上代表表示根据name去查找相应的信息,但是name是一个可填可不填的条件,不填写的时候不作为查询条件。
可多个 if 语句同时使用。以下语句表示为可以按照 name 或者 id 进行模糊查询。如果您不输入,则返回所有的记录。但是,如果你传递了任意一个参数,它就会返回与给定参数相匹配的记录: 2.MyBatis choose、when和otherwise标签
MyBatis 中动态语句 choose-when-otherwise 类似于 Java 中的 switch-case-default 语句。由于 MyBatis 并没有为 if 提供对应的 else 标签,如果想要达到 ...... 的效果,可以借助 、、 来实现。
动态语句 choose-when-otherwise 语法如下。 SQL语句1 SQL语句2 SQL语句3 SQL语句4
choose 标签按顺序判断其内部 when 标签中的判断条件是否成立,如果有一个成立,则执行相应的SQL 语句,choose 执行结束;
如果都不成立,则执行 otherwise 中的 SQL 语句。
这类似于 Java 的 switch 语句; choose 为 switch, when 为 case, otherwise 则为 default。
示例
以下示例要求:
当网站名称不为空时,只用网站名称作为条件进行模糊查询;
当网站名称为空,而网址不为空时,则用网址作为条件进行模糊查询;
当网站名称和网址都为空时,则要求网站年龄不为空.
这样 MyBatis 就会根据参数的设置进行判断来动态组装 SQL,以满足不同业务的要求。远比 Hibernate 和 JDBC 中大量判断 Java 代码要清晰和明确。 3.MyBatis where标签
where 标签
where 标签主要用来简化 SQL 语句中的条件判断,可以自动处理 AND/OR 条件,语法如下 AND/OR ...
if 语句中判断条件为 true 时,where 关键字才会加入到组装的 SQL 里面,否则就不加入。where 会检索语句,它会将 where 后的第一个 SQL 条件语句的 AND 或者 OR 关键词去掉。
示例
班凯罗我认为自己整场比赛都很有侵略性我就是要努力去得分直播吧12月8日讯今日NBA常规赛,魔术116111加时战胜快船。赛后,魔术状元秀班凯罗接受了记者采访。谈到加时赛最后时刻造成犯规,站上罚球线6中6,班凯罗讲道我认为持球人在最后时
电商逻辑发生转变,京东唯品会正瞄准同一方向一直以来总是有人认为,电商和实体是互相对立的两面。电商兴起,那么实体经济必将衰弱,或者实体兴起电商衰落。其实,两者的关系根本不是这么一回事。在当下,电商和实体的关系已经发生了巨变,
格式化人生我为青春打个样每个人当下所承受的所经历的以及自己感受的,这些林林种种与自己的理想和目标相比,都不值得一提都轻如鸿毛。坚定自己的理想未来可期!以上写在致加西亚的一封信扉页,赠自己小侄。他小小年纪年
儿子是顶级企业家,这位母亲说我很忙,你的人生自己负责这两天,大家给埃隆马斯克(ElonMusk)SpaceX公司载人火箭发射成功刷屏了SpaceX在推特上宣布,飞船对接成功,龙宇航员已抵达国际太空站。据报道,两名宇航员将在国际空间站
世界发展的两个方向如果把地球上的生命看成一个整体,暂时称这个整体为万物体。而站在万物体的角度来看人类的进化方向一共有两个。一个是跟随万物共进化,称之为生态文明体一个是进化成引导万物的工业化文明体。生
十年里,到底是追求平淡还是惊艳的人生?2022生机大会十年过去了,现在回想起来自己走过的路,到底是追求平淡的人生还是惊艳的人生?从一个城市辗转到了另一个陌生的城市,心里一直期盼有一个不一样的际遇,然而事情并没有自己想的
人生五十岁,很难人生五十岁,很难。每天起天起床时,你必须努力工作,思考如何努力工作,赚更多的钱,以支持生活,保持生活。五十岁以后,我觉得我的身体不是我自己的。为了家庭,为了孩子,为了父母,我成了我
魔笛的足球人生谦逊的天才卢卡莫德里奇的故事感动激励了无数球迷,也包括那些怀揣远大梦想的少年。最适合描述他的词语是谦逊的天才。下文作者为前国际足联官员兹沃尼米尔博班这是一本特别的传记,讲述了一个来自克罗地亚
千万不要小瞧身边沉默低调的人,真正厉害的人,大都低调安静冰心繁星中,有这么一句诗高飞的鸟儿,何必与笼中的同类争噪,你自有自己的天空。我们身边有那么一类人,他们低调安静,有人可能会觉得他们不合群,不懂社交,人脉关系差,肯定没什么出息,这种
这个冬天,江南的雪会不会落满眉间浅冬,微雨的早晨写诗的人在江南踮足想象二月的料峭谁踏香而来,在雪地空掷一枝梅花驰过的马蹄卷起烟尘把半世繁华深深掩埋而你孤傲地袒露春天的眼睛和旷世无双的容颜幸好这个回风舞雪的早晨远足
芦苇之思蓝文柯早起,走出门外,走近那我几乎每天都要走过一遍的水塘,看水塘四周树上凋零的落叶在秋风中四散飞扬,看水塘岸边水中丛丛芦苇装点秋光,看一茎芦苇在水面上盘旋飘荡,一时间回想起一些关于芦苇的