今天在接口中接收参数转换String时遇到一个巨大的坑,也是自己疏忽大意所致----

事情是这样的,项目中接口的公共入参对象为Map<String,Object>,而sql中需要的参数为String数组。

我习惯性的取出参数value后就用String.valueOf转换了一下切分为数组传了过去,结果在测试时发现无论该参数传null值还是不写,都不会被sql的非空判断拦截----

<!-- 查询图表数据,所有或单个 -->
<select id="queryExhibitionInfo" resultMap="BaseResultMap"
parameterType="java.util.List">
select REPORT_TYPE,ELEMENT_KEY,ELEMENT_NAME,ELEMENT_DESC,ELEMENT_VALUE
from
TOOL_DOC_REPORT_CONF_T
<if test="_parameter != null">
where REPORT_TYPE in
<foreach item="item" index="index" collection="array" open="("
separator="," close=")">
#{item}
</foreach>
</if>
</select>

当时那个奇怪啊----打了个debug才发现,null被转换成字符串了!!!!

作为一个小白,一直以为转String就应该用String.valueOf,可以避免空指针----

现在才知道,toString()方法也是有适用场景的,这里使用toString()就不会出现这种情况了。一定要吸取教训!

不应该使用String.valueOf的场景的更多相关文章

  1. Java中区别.toString() ,(String),valueOf()方法

    在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...

  2. String、String.valueOf、toString 它们三者的区别总结

    今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...

  3. Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较。

    1.空串+类型变量方式转换 int i=20; String s=""+i; 这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行加法 ...

  4. (String)、toString、String.valueOf的区别

    String.valueOf()它可以将JAVA基本类型(int,double,boolean等)和对象(Object)转换成String型toString()是对象的方法,它可以将该对象转换成Str ...

  5. (String) | String.valueOf()

    Map m = new HashMap(); Integer i = 5; String s = null; m.put("val1", i); m.put("val2& ...

  6. String.valueOf(null) 报空指针

    String.valueOf 默认的方法 argument 可以为null 的 boolean b = null; char c = null; char[] data = null; double ...

  7. String.valueOf()

    1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...

  8. java Byte.toString 方法与String.ValueOf(Byte)效率比较

    int times = 10000000; Byte[] li = new Byte[times]; for (int i = 0; i < times; i++) { li[i] = (byt ...

  9. Java 之String.valueOf(obj)

    实例代码如下: String str = null; String uSelectDate = String.valueOf(str); System.out.println("====== ...

随机推荐

  1. html页面禁止用户右键粘贴复制保存的代码

    HTML页面禁止选择.页面禁止复制.页面禁止右键 原创古城寨主2018-03-01 17:50:59评论(1)228人阅读   HTML页面内容禁止选择.复制.右键 刚在一个看一个站点的源代码的的时候 ...

  2. JS 跳出多重循环

    今天学到了如何跳出多重循环

  3. npm由来和作用

    npm由来 本文转载自: https://blog.csdn.net/qq_37696120/article/details/80507178 npm作用 本文转载自: https://www.cnb ...

  4. 浅谈java 之 Map

    先来一张Map的类继承图 Map :Hashtable .HashMap .LinkedHashMap .TreeMap 的比较   1.Hashtable的方法实现了synchronized 是线程 ...

  5. erlang中http请求

    1..app文件中 {application,backend,[  {description,"ebank backend"},  {vsn,1.0},  {modules,[]} ...

  6. python学习笔记:2.python基础

    4.27 01,pycharm 安装使用. 011,昨日内容回顾.     编译型:         将代码一次性全部编译成二进制,然后运行.         优点:执行效率高.         缺点 ...

  7. Python Opencv安装环境搭建

    https://blog.csdn.net/weifenglin1997/article/details/78723544

  8. [server]利用python构建的服务器地址问题

    http://0.0.0.0:8000/ 利用github开源项目搭建AI上色师时,遇到了建立server却无法访问的问题,ip如上. 其实很简单,0.0.0.0并不是有效的ip地址,用localho ...

  9. linux实时时钟相关函数

    time 功能:获取1970年1月1日00:00:00到现在的秒数 原型:time_t time(time_t *t); 参数: t:获取到的秒数 返回:获取到的秒数 说明:在time.h中定义了ti ...

  10. 使用context关闭协程以及协程中的协程

    package main import ( "sync" "context" "fmt" "time" ) var wg ...