我是靠谱客的博主 明亮乌龟,最近开发中收集的这篇文章主要介绍mybatis的 choose -- when test -- otherwise 标签和 if test 标签,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。 

当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。

 

<!--  choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->  
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">  
    SELECT *  
      FROM User u   
    <where>  
        <choose>  
            <when test="username !=null ">  
                u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')  
            </when >  
            <when test="sex != null and sex != '' ">  
                AND u.sex = #{sex, jdbcType=INTEGER}  
            </when >  
            <when test="birthday != null ">  
                AND u.birthday = #{birthday, jdbcType=DATE}  
            </when >  
            <otherwise>  
            </otherwise>  
        </choose>  
    </where>    
</select>  

 

2.if-test 不会跳出判断语句

2.1 if-test标签判断语法: 
@see http://blog.csdn.net/z69183787/article/details/51589171 
用==判断时应写成

  1. <if test='type=="y"'>

  2. and status = 0

  3. </if>

而不是

  1. <if test="type=='y'">

  2. and status = 0

  3. </if>

mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,’y’会被解析成字符,因为java是强类型的,char 和 一个string 会导致不等。所以if标签中的sql不会被解析。具体的请参照 OGNL 表达式的语法

最后

以上就是明亮乌龟为你收集整理的mybatis的 choose -- when test -- otherwise 标签和 if test 标签的全部内容,希望文章能够帮你解决mybatis的 choose -- when test -- otherwise 标签和 if test 标签所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部