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

一、问题

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

二、分析

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


    

   
   

  

  •  

三、举例

例如,


  •  

四、解析

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”;

你可能感兴趣的:(mybatis)