mybatis中用tinyint保存Boolean类型_xue317378914的专栏

CSDN博客 · · 27 次点击 · · 开始浏览    

一、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不再起作用

本文来自:CSDN博客

感谢作者:CSDN博客

查看原文:mybatis中用tinyint保存Boolean类型_xue317378914的专栏

27 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传