【MyBatis框架】动态SQL之choose,when,otherwise详解

本文详细介绍了MyBatis中的条件选择执行机制,通过配置XML选择器实现动态SQL。当多个条件时,只执行满足的第一个条件,不影响后续结果。通过示例代码展示了如何编写接口、配置文件,并进行测试,验证了该机制的正确性。测试中,即使未满足第二个条件,由于第一个条件已满足,依然能获取到预期数据。
摘要由CSDN通过智能技术生成

Choose:

只选择第一个成立的条件执行。后面的条件不对结果产生影响。

使用:

  • 编写接口:
 List<Book>  queryBookByChoose(Map map);
  • 编写配置文件
<select id="queryBookByChoose" parameterType="map" resultType="Book">
        select * from book
        <where>
            <choose>
               <when test="name!=null">
               name=#{name}
               </when>
               <when test="author!=null">
                   and author=#{author}
               </when>
                <otherwise>
                    and seal=#{seal}
                </otherwise>
            </choose>

        </where>
    </select>
  • 测试:
@org.junit.Test
       public  void testIf(){
            SqlSession sqlSession=MyBatisUtils.getSqlSession();
            BookMapper bookMapper=sqlSession.getMapper(BookMapper.class);
            HashMap map=new HashMap();
           map.put("name","三国");
      //map.put("author","罗贯中");
     map.put("seal",9990);
          List<Book> bookList= bookMapper.queryBookByChoose(map);
     for (Book book : bookList) {
         System.out.println(book);
     }
            sqlSession.close();
       }
  • 结果:
    虽然第二个选择条件销量没有满足,但是第一个选择条件满足了,所以第二个选择条件就不会对结果产生影响。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr_树先森

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

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

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

打赏作者

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

抵扣说明:

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

余额充值