Mybatis的xml中使用if/else标签的具体使用
使用if标签进行查询
SELECT
orderNo,
adname,
orderstatus
FROM
order_A
where
<if test="order!=null">
order=#{order}
</if>
<if test="title!=null">
and title=#{title}
</if>
需要注意的是:如果第一个if的order为null的话 第二值title也为null的话运行会报错,就算第一个if等于null 那么查询语句变成 where and title='哈哈哈'
这样运行的话也会出现错误。
where标签出场
SELECT
orderNo,
adname,
orderstatus
FROM
order_A
<where>
<if test="order!=null">
order=#{order}
</if>
<if test="order!=null">
and title=#{title}
</if>
</where>
where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入WHERE子句。而且,若语句的开头为AND或OR,where 元素也会将它们去除。这个只能解决2个值都为空。
不能解决order值为空但是title值为空时还是会出现语句错误的情况,这个时候我们可以在and 前面用1=1或者true来解决
如:
或这样
if/else 使用 choose,when,otherwise 代替
由于Mybatis中没有else标签但是可以通过choose,when,otherwise来使用
SELECT
orderNo,
adname,
orderstatus
FROM
<choose>
<when test=" platformtype != null and platformtype.trim() != '' and platformtype == 1">
`orders_A` as orderTable
</when>
<when test=" platformtype != null and platformtype.trim() != '' and platformtype == 2">
`orders_B` as orderTable
</when>
<when test=" platformtype != null and platformtype.trim() != '' and platformtype == 3">
`orders_C` as orderTable
</when>
<otherwise>
`orders_A` as orderTable
</otherwise>
</choose>
翻译一下上面的语句:
当platformtype 值不为空并且把platformtype 值进行去除空字符串,并且值等于1时
就会把表orders_A进行拼接,如果条件都不符合的话就会走otherwise标签默认拼接orders_A表进行查询
choose,when,otherwise标签有点像Java中的switch 当where的test值满足时会拼接里面的表,otherwise表示其他when标签都不满足时执行拼接
到此这篇关于Mybatis的xml中使用if/else标签的具体使用的文章就介绍到这了,更多相关Mybatis xml=使用if/else标签内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341