Mybatis中,Integer类型参数值为0时得到 ""(空字符串)

今日遇到的问题:

查询版本信息时,由于version是Integer类型,所以当前台选择版本为0时,变成了查询了所有的版本信息。

sql片段:
</if>
<if test="version != null and version != ‘‘ ">    
AND a.version = #{version}   
</if>

原因:

MyBatis因自身原因默认了 Integer类型数据值等于0时 为 ""(空字符串)

解决办法:

1. 某些情况下,可以在Controller处就拦截,并向前台提示,比如:“必须输入有效数字”,不让他再往后传。

2. 将判断条件version != ‘‘删去,不让它判断。

如:

</if>
<if test="version != null ">
AND a.version = #{version}
</if>

弊端:就是当有哪位仁兄真的用这个方法传了个空字符串,就无法判断。

3. 单独加上当version为0的特殊情况

如:

</if>
<if test="version != null and version != ‘‘ or version ==0 ">
AND a.version = #{version}
</if>

当然,如果想默认输入为0时查询所有(类似于上述问题示例)或者是后面想转为空字符串,

可以不用改,也算是巧用"bug"。

原文地址:https://www.cnblogs.com/Wulc-theworld/p/11412172.html

时间: 2024-10-11 05:59:24

Mybatis中,Integer类型参数值为0时得到 ""(空字符串)的相关文章

Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number'); alert(typeof("")

Oracle中Integer类型/DBNull的处理方法

1. 以前我一直以为 integer=number(38,0) --38是number的最大精度 integer 是个超大的数据类型,最大可以表示为power(10,126)-1 因为一个字节最大表示256,那么N个字节最大表示power(256,n)>=power(10,126) n=53,一个integer类型最少使用53个字节. 所以Integer类型还是尽量少用,一般很少用到这么大的数字.特别是某些人对于boolean类型的处理: 因为Oracle的表结构中没有布尔类型,所以很多人干脆用

MySQL中varchar类型在5.0.3后的变化

1.mysql varchar类型变化:mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 之后: 0--65535字节 varchar(20)表示字符数,不管什么编码,既汉字也能放20个.但最多占65532字节(两个字节存放长度,小于255字节用1个字节存放长度) 1.存储限制: varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需

mybatis中 bit类型判断

<if test="recommend != null and recommend == true"> and g.recommend = 1 </if> <if test="recommend != null and recommend == false"> and g.recommend = 0 </if> recommend类型是bit类型,判断时只能用0(代表false)或者1 (true) 原文地址:http

dev gridcontrol 绑定int型的列默认当值为0时为空

xmlns:sys="clr-namespace:System;assembly=mscorlib" <dxg:GridColumn Header="测试" FieldName="整型">                    <dxg:GridColumn.EditSettings>                        <dxe:TextEditSettings>                  

mybatis中一直获取xml配置文件输入流值为空的类似解决方法

第一个问题:一直在 InputStream stream = StudentDaoImpl.class.getClassLoader().getResourceAsStream("config.xml");返回null,后来发现是resource不能编译到class文件中,在pom中添加 <resources> <!-- 不编译resources下的配置文件 --> <resource> <directory>src/main/resou

json字段为null时输出空字符串

Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn"); String str = JSONObje

Mybatis中的resultType和resultMap 区别

Mybatis中的resultType和resultMap 是mybatis 中返回类型一定用到的,但不会同时出现.mybatis返回类型肯定是map结构,然后根据返回类型是map还是对象类型,再转换. 在给对象设置属性的时候,两个方法肯定会调用. private Object getRowValue(ResultSetWrapper rsw, ResultMap resultMap) throws SQLException { final ResultLoaderMap lazyLoader

java中Integer值比较不注意的问题

今天,帮人看代码时,发现这个问题,回顾起来,记录下来. 先来看一个代码片段 public static void main(String[] args) { Integer a1 = Integer.valueOf(60); //danielinbiti Integer b1 = 60; System.out.println("1:="+(a1 == b1)); Integer a2 = 60; Integer b2 = 60; System.out.println("2:=