首页后端开发其他后端知识mybatis中if-else的嵌套具体用法是什么?

mybatis中if-else的嵌套具体用法是什么?

时间2024-03-24 17:34:04发布访客分类其他后端知识浏览1455
导读:今天这篇给大家分享的知识是“mybatis中if-else的嵌套具体用法是什么?”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,因此分享发大家做个参考,下文的讲解详细,步骤过程清晰,希望这篇“mybatis中if-else的嵌套具体...
今天这篇给大家分享的知识是“mybatis中if-else的嵌套具体用法是什么?”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,因此分享发大家做个参考,下文的讲解详细,步骤过程清晰,希望这篇“mybatis中if-else的嵌套具体用法是什么?”文章能帮助大家解决问题。


案例一:if-else

在mybatis的使用过程中,难免会存在使用if-else的逻辑,但是实际是没有这种语法的,提供了choose标签来替代这种语法

   select id="selectUserByState" resultType="com.bz.model.entity.User">
    
    SELECT
      *
    FROM
      user
    WHERE
      1=1
    choose>
    
      when test="state == 1">

        AND name = #{
name1}
    
      /when>
    
     when test="state == 2">

        AND name = #{
name2}
    
      /when>
    
      otherwise>

        AND name = #{
name3}
    
      /otherwise>
    
    /choose>
    
  /select>
    

案例二:if嵌套

在实际的编码过程中会对一些条件进行重复判断,并对内深入if判断,这时就可以使用if嵌套

  select id="selectUserByState" resultType="com.bz.model.entity.User">
    
    SELECT
      *
    FROM
      user
    WHERE
     if test=" gender!=null and gender!='' ">
     
         if test=" gender==male ">

             and name=#{
name}
    
         /if>
    
     /if>
    
  /select>
    

MyBatis中if和choose的嵌套

    !-- public ListVadtaxShow>
     findList(VadtaxShow vadtaxShow);
     -->
    
    select id="findList" parameterType="com.cdqyzj_WC.Backstage.vaddedtax.domain.VaddeTax" resultType="com.cdqyzj_WC.Backstage.vaddedtax.domain.VaddeTax">
    
    SELECT t.addedId,t.taxType,t.totalSales,t.outputTax,t.inputTax,t.entryAmount, t.amountTax,t.retentionTax,
    t.createTime, t.taxTime,t.comId,c.comName,c.comType
    FROM t_g_vaddedtax AS t JOIN t_ucompany AS c ON c.comId = t.comId
    where>
    
    1=1
            if test="comType != '' and comType != null">
 and c.comType = #{
comType}
    /if>
    
            if test="taxTime != null and taxTime != ''">
 and t.taxTime =#{
taxTime}
     /if>
        
            if test="taxType != null and taxType != '' ">
 and t.taxType =#{
taxType}
     /if>
    
            if test="comId != null and comId != '' and comId != 0 ">
 and t.comId =#{
comId}
     /if>
        
            if test="start_times != null and end_times != null">
    
                choose>
    
                    when test="middle_times != null">

                        and t.createTime in ('${
start_times}
','${
middle_times}
', '${
end_times}
    ' )
                    /when>
    
                    otherwise>

                        and t.createTime in ('${
start_times}
','${
end_times}
    ' )
                    /otherwise>
    
                /choose>
    
            /if>
    
            if test="orderBy != null and orderType != '' ">

                     order by ${
orderBy}
  ${
orderType}
    
            /if>
    
            if test="pageSize != 0 ">

                    limit ${
startRows}
,${
pageSize}
    
            /if>
    
    /where>
    
    /select>
    

功能实现之后反思:要不我不对“middle_times”判空?这样不就不用嵌套了吗?

    !-- public ListVadtaxShow>
     findList(VadtaxShow vadtaxShow);
     -->
    
    select id="findList" parameterType="com.cdqyzj_WC.Backstage.vaddedtax.domain.VaddeTax" resultType="com.cdqyzj_WC.Backstage.vaddedtax.domain.VaddeTax">
    
    SELECT t.addedId,t.taxType,t.totalSales,t.outputTax,t.inputTax,t.entryAmount, t.amountTax,t.retentionTax,
    t.createTime, t.taxTime,t.comId,c.comName,c.comType
    FROM t_g_vaddedtax AS t JOIN t_ucompany AS c ON c.comId = t.comId
    where>
    
    1=1
            if test="comType != '' and comType != null">
 and c.comType = #{
comType}
    /if>
    
            if test="taxTime != null and taxTime != ''">
 and t.taxTime =#{
taxTime}
     /if>
        
            if test="taxType != null and taxType != '' ">
 and t.taxType =#{
taxType}
     /if>
    
            if test="comId != null and comId != '' and comId != 0 ">
 and t.comId =#{
comId}
     /if>
        
            if test="start_times != null and end_times != null">

                and t.createTime in ('${
start_times}
','${
middle_times}
', '${
end_times}
    ' )
            /if>
    
            if test="orderBy != null and orderType != '' ">

                     order by ${
orderBy}
  ${
orderType}
    
            /if>
    
            if test="pageSize != 0 ">

                    limit ${
startRows}
,${
pageSize}
    
            /if>
    
    /where>
    
    /select>
    



现在大家对于mybatis中if-else的嵌套具体用法是什么?的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多mybatis中if-else的嵌套具体用法是什么?的知识,欢迎关注网络,网络将为大家推送更多相关知识的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: mybatis中if-else的嵌套具体用法是什么?
本文地址: https://pptw.com/jishu/652212.html
MySQL如何创建表外键约束?有什么规则? PHP数据库连接持久化怎么理解,有何用处

游客 回复需填写必要信息