文档详情

mybatis动态sql答题.doc

发布:2017-04-20约字共10页下载文档
文本预览下载声明
1.? MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。 MyBatis中用于实现动态SQL的元素主要有: ? if choose(when,otherwise) trim where set foreach if就是简单的条件判断,利用if语句我们可以实现某些简单的条件选择。先来看如下一个例子: Xml代码 ? select?id=dynamicIfTest?parameterType=Blog?resultType=Blog?? ????select?*?from?t_blog?where?11?=?1?? ????if?test=title?!=?null?? ????????and?title?=?#{title}?? ????/if?? ????if?test=content?!=?null?? ????????and?content?=?#{content}?? ????/if?? ????if?test=owner?!=?null?? ????????and?owner?=?#{owner}?? ????/if?? /select?? 这条语句的意思非常简单,如果你提供了title参数,那么就要满足title=#{title},同样如果你提供了Content和 Owner的时候,它们也需要满足相应的条件,之后就是返回满足这些条件的所有Blog,这是非常有用的一个功能,以往我们使用其他类型框架或者直接使用 JDBC的时候, 如果我们要达到同样的选择效果的时候,我们就需要拼SQL语句,这是极其麻烦的,比起来,上述的动态SQL就要简单多了。 choose元素的作用就相当于JAVA中的switch语句,基本上跟JSTL中的choose的作用和用法是一样的,通常都是与when和otherwise搭配的。看如下一个例子: Xml代码 ? select?id=dynamicChooseTest?parameterType=Blog?resultType=Blog?? ????select?*?from?t_blog?where?11?=?1??? ????choose?? ????????when?test=title?!=?null?? ????????????and?title?=?#{title}?? ????????/when?? ????????when?test=content?!=?null?? ????????????and?content?=?#{content}?? ????????/when?? ????????otherwise?? ????????????and?owner?=?owner1?? ????????/otherwise?? ????/choose?? /select?? when元素表示当when中的条件满足的时候就输出其中的内容,跟JAVA中的switch效果差不多的是按照条件的顺序,当when中有条 件满足的时候???就会跳出choose,即所有的when和otherwise条件中,只有一个会输出,当所有的都不满足的时候就输出 otherwise中的内容。所以上述语句的意思非常简单, 当title!=null的时候就输出and titlte = #{title},不再往下判断条件,当title为空且content!=null的时候就输出and content = #{content},当所有条件都不满足的时候就输出otherwise中的内容。 where语句的作用主要是简化SQL语句中where中的条件判断的,先看一个例子,再解释一下where的好处。 Xml代码 ? select?id=dynamicWhereTest?parameterType=Blog?resultType=Blog?? ????select?*?from?t_blog??? ????where?? ????????if?test=title?!=?null?? ????????????title?=?#{title}?? ????????/if?? ????????if?test=content?!=?null?? ????????????and?content?=?#{content}?? ????????/if?? ????????if?test=owner?!=?null?? ????????????and?owner?=?#{owner}?? ????????/if?? ????/where?? /select?? ?where元素的作用是会在写入where元素的地方输出一个where,另外一个好处是你不需要考虑where元素里面的条件输出是什么样 子
显示全部
相似文档