mybatis中如何用tinyint保存Boolean类型

 更新时间:2022年09月22日 14:33:59   作者:小苹果1357  
这篇文章主要介绍了mybatis中如何用tinyint保存Boolean类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis用tinyint保存Boolean类型

一、boolean类型

MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),

MySQL里有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0,

mysql> select true,false,TRUE,FALSE;
+------+-------+------+-------+
| TRUE | FALSE | TRUE | FALSE |
+------+-------+------+-------+
|    1 |     0 |    1 |     0 |
+------+-------+------+-------+

可以如下插入boolean值:insert into [xxxx(xx)] values(true),当然也可以values(1);

MySQL没有boolean类型。这也是比较奇怪的现象。例:

create table xs
(
   id int primary key,
   bl boolean
)

这样是可以创建成功,但查看一下建表后的语句,就会发现,mysql把它替换成tinyint(1)。也就是说mysql把boolean=tinyInt了。

二、我们的实体类

可以根据自己的习惯直接设置成boolean也可以使用int,数据库保存时会自动将true、false转换成1/0。

mybatis中用tinyint保存Boolean类型的时候,直接使用false和true就可以,mybatis会自动映射。

private Boolean comment ;

但是要注意的是,一般的mapper.xml中写where的时候会判断

<if test="comment !=null and comment !=''">  
    comment=#{comment},  
</if>  

但是这里要判断的时候就要去掉后边的不等于空字符串了,应该使用如下的判断

<if test="comment !=null">  
    comment=#{comment},  
</if>  

这种判空情况很多,boolean、date类型,都不能使用!=''

三、页面select标签

使用值true、false时的展示选择问题

<label class="col-sm-1 control-label padA01">是否是物联网表</label>
<div class="col-sm-3">
    <select id="isNbMeter" class="form-control">
        <option value=true selected>是</option>
        <option value=false>否</option>
    </select>
</div>

选择后,保存上传,不需要什么处理,直接保存值为boolean类型,与实体类一致,mysql自动转换成int型保存。

但是页面展示时,此类型的赋值展示跟其他值不一样:

$("#installDate").val("");
$("#inUseMeter").val=true;
$("#inUseMeter").find("option[value=true]").attr("selected",true);
$("#isNbMeter").val=true;
$("#imei").val("");
$("#meterState").val(1);

存在问题:

当select值设为true后,在对他设为false不起作用,值还是true,没有改变,不知什么原因?

$("#inUseMeter").val=false;
$("#inUseMeter").find("option[value=false]").attr("selected",true);

第一次设为true后,在设为false不再起作用

mybatis更新时如果数据类型为boolean型遇到的问题

系统框架使用SSM当更新的数据类型为boolean时使用if标签判断不能判断时段是否为空,只判断字段是否等于null

<if test="flag != null">
   flag = #{flag,jdbcType=TINYINT},
</if>

否则当字段为false时,不能更新。

因为在mybatis底层当传入进来的字段没有默认值的时候是空也就是false,你传入进来的字段值为false,在xml中的if判断就会转换为‘’,导致修改不成功这个字段的值。

所以在修改boolean类型字段的时候只需要判断是否为null就行了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringCloud集成Micrometer Tracing的代码工程

    SpringCloud集成Micrometer Tracing的代码工程

    Micrometer Tracing 是一个用于微服务架构的追踪库,它提供了一种简单而强大的方式来收集和报告分布式系统中的性能和调用链信息,Micrometer Tracing 旨在帮助开发者和运维人员理解微服务之间的交互,本文给大家介绍了如何在 Spring Cloud 集成 Micrometer Tracing
    2024-12-12
  • Java JSch远程执行Shell命令的方法

    Java JSch远程执行Shell命令的方法

    本文主要介绍了Java JSch远程执行Shell命令,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 快速解决idea @Autowired报红线问题

    快速解决idea @Autowired报红线问题

    这篇文章主要介绍了快速解决idea @Autowired报红线问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Javaweb 定时器功能代码实例

    Javaweb 定时器功能代码实例

    这篇文章主要介绍了Javaweb 定时器功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 一文带你深入了解Java8 Stream流式编程

    一文带你深入了解Java8 Stream流式编程

    在实际项目当中,若能熟练使用Java8 的Stream流特性进行开发,就比较容易写出简洁优雅的代码。本文主要就是基于实际项目常用的Stream Api流式处理总结,希望对大家有所帮助
    2023-04-04
  • 解析springboot集成AOP实现日志输出的方法

    解析springboot集成AOP实现日志输出的方法

    如果这需要在每一个controller层去写的话代码过于重复,于是就使用AOP定义切面 对其接口调用前后进行拦截日志输出。接下来通过本文给大家介绍springboot集成AOP实现日志输出,需要的朋友可以参考下
    2021-11-11
  • springboot+Oauth2实现自定义AuthenticationManager和认证path

    springboot+Oauth2实现自定义AuthenticationManager和认证path

    本篇文章主要介绍了springboot+Oauth2实现自定义AuthenticationManager和认证path,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 使用Java应用程序添加或删除 PDF 中的附件

    使用Java应用程序添加或删除 PDF 中的附件

    当我们在制作PDF文件或者PPT演示文稿的时候,为了让自己的文件更全面详细,就会在文件中添加附件,那么如何添加或删除PDF中的附件呢,今天通过本文给大家详细讲解,需要的朋友参考下吧
    2023-01-01
  • Java输入输出语句举例详解(通俗易懂!)

    Java输入输出语句举例详解(通俗易懂!)

    这篇文章主要给大家介绍了关于Java输入输出语句的相关资料,作为一种常用的编程语言,Java提供了多种输入输出的方式,用于与用户进行数据交互或处理文件数据,需要的朋友可以参考下
    2023-10-10
  • 特殊数据结构之使用Java实现单调栈示例

    特殊数据结构之使用Java实现单调栈示例

    这篇文章主要为大家介绍了特殊数据结构之使用Java实现单调栈示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论