美文网首页Java互联网科技
mybatis 中<if>标签bool值类型为fal

mybatis 中<if>标签bool值类型为fal

作者: java欧阳丰 | 来源:发表于2019-08-07 15:56 被阅读5次

对百度的某些文章深恶痛绝, 只是ctrl+c和ctrl+v。并且还不能解决问题。

昨天实现一个功能,根据文章的id或者别名查找文章。

起初采用mybatis的Example进行查询,对参数artName进行判断,如果是纯数字就byId查询,否则就by别名。由于查询文章的同时,需要关联查询文章分类标签,所以选择采用select语句映射的方式查询,但又不想写两个查询方法,就使用了mybatis中动态sql。

/**
 * 查询文章
 * @param artName id 或 别名
 * @param byId 如果是 true 则按照id查询
 *             否则 按照别名查询
 * @return
 */
public Article selectByArtName(@Param(value = "artName") String artName,
                          @Param(value = "byId") Boolean byId);

mapper中定义了一个方法,有artName和byId两个参数,artName 表示id 或 别名,byId表示是否通过id查询。
对byId Boolean值进行判断时,出现false值无效的情况,在百度了一圈发现,普遍采用

<if test="byId != null">
    a.id = #{artName}
</if>

这种方式,当byId=true时正常执行,但为false时不生效。后采用<choose>标签

<choose>
    <when test="byId">
        a.id = #{artName}
    </when>
    <otherwise>
        a.alias = #{artName}
    </otherwise>
</choose>

byId本身是bool值,不用进行判断。
注意: byId不用加#{},不然false也会无效,如果加了#{}, 在与其他值进行比较时,
如:#{byId} == true 会报空指针错误,如果写成#{byId} == 'true' 会报Linkhashmap无法转换成String类型错误。

相关文章

  • mybatis 中<if>标签bool值类型为fal

    对百度的某些文章深恶痛绝, 只是ctrl+c和ctrl+v。并且还不能解决问题。 昨天实现一个功能,根据文章的id...

  • Go基础——数据类型

    bool bool 类型表示一个布尔值,值为 true 或者 false。 在上面的程序中,a 赋值为 true,...

  • 记录几个Python的方法

    一、bool(),返回值为Boolean值类型,它是int类型的子类 (1)当数字使用bool()函数时,0返回F...

  • 值类型和引用类型

    // 值类型和引用类型 // Swift 中 Int, Bool,struct, enum 是值类型,甚至 Str...

  • iOS—对于BOOl类型的理解

    C语言拥有布尔类型bool,objective-c拥有布尔类型BOOL,具有YES和NO值,Cocoa代码中要用B...

  • Numpy组队学习 Task01打卡

    主要概念 数据类型 类型解释bool布尔类型,1 个字节,值为 True 或 Falseint整数类型,通常为 i...

  • C语言基础 bool类型

    bool类型 C99标准以前,C语言没有定义bool类型,表达式的值0为假,非0为真。所以条件判断语句( if(…...

  • GoLang Go 基础类型

    Boolean 布尔值的类型为bool,true或false,默认false 数值类型 整数类型 整数类型有无符号...

  • iOS 服务器返回ture false

    开发中后台会因人而异返回各种类型bool值,接收类型不对就会导致解析不到正确bool值 总结 下面的表格更能表现上...

  • Golang笔记之值类型和引用类型

    值类型:所有像int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中...

网友评论

    本文标题:mybatis 中<if>标签bool值类型为fal

    本文链接:https://www.haomeiwen.com/subject/enbodctx.html