mybatis中<if>标签bool值类型为false判断方法

 更新时间:2019年08月08日 09:21:15   作者:java欧阳丰  
这篇文章主要给大家介绍了关于mybatis中<if>标签bool值类型为false判断方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

昨天实现一个功能,根据文章的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类型错误。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • 从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate

    从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate

    本文会介绍从一个最基本的java工程,到Web工程,到集成Spring、SpringMVC、SpringDataJPA+Hibernate,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • SpringBoot实现初始化的三种策略模式

    SpringBoot实现初始化的三种策略模式

    本文主要介绍了SpringBoot实现初始化的三种策略模式,包括默认初始化策略、懒加载初始化策略和自定义初始化策略,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • Struts2学习笔记(9)-Result配置全局结果集

    Struts2学习笔记(9)-Result配置全局结果集

    这篇文章主要介绍Struts2中使用Result配置全局结果集的方法,希望能给大家做一个参考。
    2016-06-06
  • springboot rabbitmq整合rabbitmq之消息持久化存储问题

    springboot rabbitmq整合rabbitmq之消息持久化存储问题

    这篇文章主要介绍了springboot rabbitmq整合rabbitmq之消息持久化存储问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java的枚举,注解和反射(二)

    Java的枚举,注解和反射(二)

    今天小编就为大家分享一篇关于Java枚举,注解与反射原理说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-07-07
  • Java MapStruct解了对象映射的毒

    Java MapStruct解了对象映射的毒

    这篇文章主要介绍了MapStruct解了对象映射的毒,对MapStruct感兴趣的同学,可以参考下
    2021-04-04
  • Mybatis foreach用法解析--对于list和array

    Mybatis foreach用法解析--对于list和array

    这篇文章主要介绍了Mybatis foreach用法解析--对于list和array,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot与spring security的结合的示例

    SpringBoot与spring security的结合的示例

    这篇文章主要介绍了SpringBoot与spring security的结合的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • java 题解LeetCode38外观数列示例

    java 题解LeetCode38外观数列示例

    这篇文章主要为大家介绍了java 题解LeetCode38外观数列示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Springboot启动原理和自动配置原理解析

    Springboot启动原理和自动配置原理解析

    这篇文章主要介绍了Springboot启动原理和自动配置原理解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论