MyBatis的动态SQL是根据OGNL表达式的,号码大全它能够协助咱们方便的在SQL句子关键词挖掘工具中完成某些逻辑。
MyBatis中用于完成动态SQL的元素首要有:
if
choose(when,otherwise)
trim
where
set
foreach
if即是简略的条件判别,运用if句子咱们能够完成某些简略的条件挑选。先来看如下一个比如:
Xml代码 保藏代码
select * from t_blog where 11 = 1
and> and content = #{content}
and owner = #{owner}
这条句子的意思十分简略,假如你供给了title参数,那么就要满意title=#{title},相同假如你供给了Content和Owner的时分,它们也需求满意相应的条件,以后即是回来满意这些条件的一切Blog,这是十分有用的一个功用,以往咱们运用其他类型结构或者直接运用JDBC的时分, 假如咱们要到达相同的挑选效果的时分,咱们就需求拼SQL句子,这是极其费事的,比起来,上述的动态SQL就要简略多了。
choose元素的效果就相当于JAVA中的switch句子,基本上跟JSTL中的choose的效果和用法是相同的,一般都是与when和otherwise调配的。看如下一个比如:
Xml代码 保藏代码
select * from t_blog where 11 = 1
and> and content = #{content}
and owner = "owner1"
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 * from t_blog
> and content = #{content}
and owner = #{owner}
where元素的效果是会在写入where元素的当地输出一个where,别的一个优点是你不需求思考where元素里边的条件输出是啥姿态的,MyBatis会智能的帮你处置,假如一切的条件都不满意那么MyBatis就会查出一切的记载,假如输出后是and 最初的,MyBatis会把第一个and疏忽,当然假如是or最初的,MyBatis也会把它疏忽;此外,在where元素中你不需求思考空格的疑问,MyBatis会智能的帮你加上。像上述比如中,假如title=null, 而content != null,那么输出的全部句子会是select * from t_blog where content = #{content},而不是select * from t_blog where and content = #{content},由于MyBatis会智能的把首个and 或 or 给疏忽。
trim元素的首要功用是能够在自个包括的内容前加上某些前缀,也能够在这以后加上某些后缀,与之对应的特点是prefix和suffix;能够把包括内容的首部某些内容掩盖,即疏忽,也能够把尾部的某些内容掩盖,对应的特点是prefixOverrides和suffixOverrides;正由于trim有这样的功用,所以咱们也能够十分简略的运用trim来替代where元素的功用,示例代码如下:
Xml代码 保藏代码
select * from t_blog
- indexRead arguments from command-line "http://www.shoudashou.com"
- indexRead arguments from command-line "http://www.4lunwen.cn"
- indexRead arguments from command-line "http://www.zx1234.cn"
- indexRead arguments from command-line "http://www.penbar.cn"
- indexRead arguments from command-line "http://www.whathappy.cn"
- indexRead arguments from command-line "http://www.lunjin.net"
- indexRead arguments from command-line "http://www.ssstyle.cn"
- indexRead arguments from command-line "http://www.91fish.cn"
- indexRead arguments from command-line "http://www.fanselang.com"
> and content = #{content}
or owner = #{owner}
set元素首要是用在更新操作的时分,它的首要功用和where元素其实是差不多的,首要是在包括的句子前输出一个set,然后假如包括的句子是以逗号完毕的话将会把该逗号疏忽,假如set包括的内容为空的话则会犯错。有了set元素咱们就能够动态的更新那些修改了的字段。下面是一段示例代码:
Xml代码 保藏代码
update t_blog