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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在您提供的引用,出现了一个错误信息"Cannot resolve plugin org.mybatis.generator:mybatis-generator-maven-plugin:1.3.0"。这个错误通常表示Maven无法解析或找到所需的插件。根据您的引用内容,我可以提供以下解决方法: 1. 确保您的Maven配置文件的依赖项正确配置。检查您的pom.xml文件是否添加了正确的插件依赖以及其版本号。 2. 检查您的Maven仓库是否存在所需的插件。您可以尝试删除Maven本地仓库与该插件相关的文件,然后重新运行Maven命令,以便重新下载并安装插件。 3. 检查您的网络连接是否正常。有时候插件无法下载是由于网络问题导致的。您可以尝试使用其他网络或者使用代理进行连接。 4. 尝试使用更新的插件版本。您提供的引用使用的是1.3.0版本的插件,尝试使用更高版本的插件,可能会解决该问题。 总结起来,要解决"Cannot resolve plugin org.mybatis.generator:mybatis-generator-maven-plugin:1.3.0"的问题,您可以检查Maven配置文件、Maven仓库、网络连接并尝试更新插件版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate (default-](https://blog.csdn.net/qq_52291182/article/details/121033304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Maven更新失败,Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1](https://download.csdn.net/download/weixin_38687277/14888111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陶洲川

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

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

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

打赏作者

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

抵扣说明:

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

余额充值