当前位置: 首页 > 编程笔记 >

浅谈mybatis中SQL语句给boolean类型赋值问题

长孙阳成
2023-03-14
本文向大家介绍浅谈mybatis中SQL语句给boolean类型赋值问题,包括了浅谈mybatis中SQL语句给boolean类型赋值问题的使用技巧和注意事项,需要的朋友参考一下

我就废话不多说了,大家还是直接看代码吧~

<select id="getBiTree" parameterType="String" resultMap="MenuVoListMap">
  SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m
  WHERE m.is_valid = 1 AND (m.type = 0 or m.type = 1) and m.menu_id IN (${menuId})
</select> 

其中 opens是boolean类型,在这里将他的值赋值为1,即为true

<result property="open" column="opens"/> 这里的opens和上面的opens对应

补充知识:mybatis中当查询条件有Boolean类型的时候,为false时查询无效

eg:

  <if test="isOk != null and isOk !=''">
   and is_ok = #{isOk}
  </if>

此时当isOk为false时,并未查询出is_ok对应的结果来

找原因:

直接到数据库使用脚本查询

select * from table

where is_ok = false

此时能查出is_ok为0的数据

select * from table where is_ok = true

此时能查出is_ok为1的数据

此时定位问题是否在

<if test="isOk != null and isOk !=''">

通过排查去掉and isOk!='',可以正确的查出

所以正确的查询结构是:

 <if test="isOk != null">
   and is_ok = #{isOk}
  </if>

经研究:

mybatis的if判断里面最好不要使用boolean值:

mybatis会默认把空值转为false。所以如果遇见前面传空值,这个字段在mybatis里面永远就是false了,可以使用数字类型代替,但是不要使用0作为参数。

以上这篇浅谈mybatis中SQL语句给boolean类型赋值问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 赋值语句在 Lua 被强化了,它可以同时给多个变量赋值。 例如: a,b,c,d=1,2,3,4 甚至是: a,b=b,a --多么方便的交换变量功能啊 在默认情况下,变量总是认为是全局的。假如你要定义局部变量,则在第一次赋值的时候,需要用 local 说明。比如: local a,b,c = 1,2,3 -- a,b,c 都是局部变量

  • 我是angular的新手,我在学习这个hero教程时,偶然发现了这个错误: 我在这里复制了错误。

  • 本文向大家介绍浅谈golang类型断言,失败类型断言返回值问题,包括了浅谈golang类型断言,失败类型断言返回值问题的使用技巧和注意事项,需要的朋友参考一下 失败的类型断言,返回的值为最近断言类型的零值 代码入下: 补充:go语言interface{}类型断言的举例使用 在go语言里经常会用到interface{}类型,它是类似于c语言中的void *类型,可以接受任意类型的参数。当我们的函数或

  • 问题内容: 分配给变量like 和使用let like有什么区别?还是像和这样的案例?每种方法的优点和缺点是什么? 问题答案: 完全是做什么的,它用于算术表达式。目前几乎没有差别之间和。 您的示例无效。要将单词添加到变量(这是一个字符串操作),将不起作用,因为它不是算术表达式: 实际上,如果仅设置了变量,则它是一个算术表达式,否则将被视为零。

  • 本文向大家介绍浅谈c++构造函数问题,初始化和赋值问题,包括了浅谈c++构造函数问题,初始化和赋值问题的使用技巧和注意事项,需要的朋友参考一下 默认构造函数(就是没有参数的构造函数) The Default Constructor The default constructor is the constructor used to create an object when you don't p

  • 问题内容: 我在通过mysqli执行准备好的语句时遇到问题。 首先,我正在使Command出现同步错误。我正在存储结果并关闭连接,并且我已经停止获取此错误,因此希望该问题已停止。 但是,我的sql语法错误中的错误又出现了,该错误在命令不同步时可以正常工作。这是我当前的代码: 我已经尝试了许多不同的方法来纠正此snytax错误,从使用CONCAT(由于失败而被注释掉)到在绑定之前为变量分配%符号等,