【Mybatis】Mybatis中的逻辑分路:case-when-then-else-end和choose-when-otherwise

一、问题

在java代码中,基本的判断逻辑分路可以使用if,else if,else;但是如果在Mybatis中是否有对应的逻辑判断分路,来帮助我们在Mybatis的sql里,做逻辑判断?

二、分析

Mybatis中有,下面介绍两种,一是case-when-then-else-end;另一种是choose-then-otherwise,后者形式如下:
(Mybatis只有if标签,没有else标签)

<choose>
    <when>

   </when>
   <otherwise>

  </otherwise>
</choose>

三、举例

例如,

<select>
	select * from s_usr
	<choose>
       <when test= 'role!=null and role !=""  '>
			case  role
			 when instr(role,'super_')>0 then '00' 
			 else '01'
			 end as roles
        </when>
        <otherwise>
           case id
                 when id<'100' then '00'
                  else '01'
            end as roles
       </otherwise>
    </choose>
</select>

四、解析

1、when标签里面的表示满足的条件,这里用的是最基本的非空条件;不为null,补位空字符串;
2、instr(a,b)函数:表示,如果a字符串中包含b字符串,则返回值大于0,否则等于0;
3、case-when-then-else-end;也是一种选择转换方式;如果role字段中的值包含”super_”字符串;则将role状态以“00”管理员的身份展现,否则role存值“01”,表示普通人员,并且以别名roles作为栏目名来展示;
4、choose标签里,不带任何条件,表示里面包裹的部分为选择判断;when用来布置条件;而otherwise用来处理其他情况;第一种情况,如果role字段的值不为空,且不为空字符串,才能到第一个when标签里;然后when标签里还有一个情况判断,那就是case-when-then-else-end;否则,进入otherwise标签里;在otherwise里,id小于100的,也是管理员,值为“00”,否则为“01”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值