浅谈mybatis中SQL语句给boolean类型赋值问题
作者:一只特立独行的猫猫 发布时间:2023-01-19 15:15:42
标签: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作为参数。
来源:https://blog.csdn.net/fhjdzkp/article/details/77775660


猜你喜欢
- 1.查询后获取对应的数据集后,传递参数strcodeName,根据数据集中strcodeName的匹配对应字段,获取数据集中对应的目的字段p
- 微服务启动时报错2021-05-18 21:25:44.644 WARN 5452 — [tbeatExecutor-0
- 一、简介1.Apollo 是什么?Apollo(阿波罗)是携程框架部门研发的分布式配置中心。服务端基于Spring Boot和Spring
- 本文实例讲述了C#中数组段用法。分享给大家供大家参考。具体分析如下:1.数组段说明① 结构ArraySegment<T>表示数组
- Linux Hadoop 2.7.3 安装搭建Hadoop实现了一个分布式文件系统(Hadoop Distributed File Syst
- java异常分为两大类,Checked异常和Runtime异常,Checked异常都是在编译阶段可以被处理的异常。Checked异常和Run
- 1. 数据结构分类按照线性和非线性可以将Java数据结构分为两大类:①线性数据结构:数组、链表、栈、队列②非线性数据结构:树、堆、散列表、图
- 本文实例为大家分享了java使用Cookie判断用户登录情况的方法,供大家参考,具体内容如下1.判断是否登录public boolean i
- SQLite分析 SQLite是轻量级的、嵌入式的、关系型数据库,
- 克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象。正如其名,犹如一个模子雕刻而出。克隆类型分为两种:浅克隆、深克
- 引导语Socket 面试最终题一般都是让你写一个简单的客户端和服务端通信的例子,本文就带大家一起来写这个 demo。1、要求可以使用 Soc
- 简介我们在前面的Android教程中已经提到过这么一件事:Android在启动后会有一个主线程。它不允许任何子线程去改变主UI线程里的内容。
- 本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下:1. 冒泡排序:public class SortTest { pub
- 在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>
- 今天安装了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一个maven项目,项目默认是jdk1.5,
- 通常,在这个页面中会用到很多控件,控件会用到很多的资源。Android系统本身有很多的资源,包括各种各样的字符串、图片、动画、样式和布局等等
- —学习并使用mybatis-plus的一些高级功能的用法例如: AR模式、 乐观锁 、逻辑删除 、自动填充、数据保护等功能为了方便演示,咱们
- 激活码:9MWZD5CC4E-eyJsaWNlbnNlSWQiOiI5TVdaRDVDQzRFIiwibGljZW5zZWVOY
- 如下所示:if(File.Exists(path)){// 是文件}else if(Directory.Exists(path)){// 是
- 1.背景Java语言相比于C和C++,一个最大的特点就是不需要程序员自己手动去申请和释放内存,这一切交由JVM来完成。在Java中,运行时的