zoukankan      html  css  js  c++  java
  • 一个int类型引发的bug

    一、引言

    今天我在项目开发中,遭遇了一个莫名其妙的问题,概括加抽象后形成如下问题:在使用MyBatis的XML语句实现Dao层接口 List<Person> selectBySome(@Param("record") PersonExample example)时候,我写的XML中有这么一句代码:

    <if test="record.id!=null">
        b.id=record.id
    </if>

    结果我及时不对example的id赋值,查询条件还是会有 b.id=0 ,为啥?

    二、分析

    很显然,条件中带有了 b.id=0 那么是因为 record.id!=null 成立了,此时我反过去看PersonExample,你猜我看到了什么?

    public PersonExample{
      private int id;
    //... }

    看清楚,id居然是int, int作为基本数据类型肯定不为空啊,应该改为int的包裹类型Integer这才可以为空。

    so int=> Integer bug消失。

    三、总结

    这个BUG印证了我之前看到的一篇文章中的一个关联:Struts2或者SpringMVC接口前台参数的时候应该尽可能使用包裹类型,目的就是为了处理为null的情况。

    此处是否亦然?

    那么项目中是否尽可能的使用包裹类型而不是基本类型了?

  • 相关阅读:
    MySQL主从复制搭建
    CSS基本样式简单介绍
    前端代码编码规范
    Markdown语法简单介绍
    Java API 操作Redis
    Java API 操作Zookeeper
    MySQL优化
    ES 可视化工具
    消息队列MQ
    Docker基础
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/5686510.html
Copyright © 2011-2022 走看看