list=null 跟 ! list.isEmpty()的区别

pc.d

发布于 2018.08.27 15:09 阅读 2529 评论 0

需求:可以多选查询来查询符合的多个内容。

方案:前端向后台传递一个数组 ,利用 where project_id in (1,2,3.......)的方式来查询

问题:mapper向xml传递的时候由于<if>条件书写不正确导致拼写错误的sql语句导致bug

本来我的<if>是这样的:

<if test="ids!=null" >
  and  project_daily.project_id in
  <foreach collection="ids" item="projectId" separator="," open="(" close=")">
        #{projectId}
  </foreach>
</if>
GROUP BY project_daily.user_id

这样程序运行的时候,当我前端没有搜索project_id的时候sql将会出现:

where(project_daily.create_time between ? and ?)      

 
      and  project_daily.project_id in    

      
        GROUP BY project_daily.user_id

这样的问题。

将<if>更改成:

<if test="ids.size()!=0" > </if>就拼写正确。

所以list=null 跟  ! list.isEmpty()是有区别的,我在百度搜索的时候发现这一段比较容易理解:

这就相当与你要要到商店买东西

-------------------------------------------------------------------------------------------

list!=null         首先判断是否有商店
!list.isEmpty()     没有判断商店是否存在,而是判断商店是否有东西
总结用法:如果连商店都没有,何来的的东西可卖
所以一般的判断是
if(list!=null && !list.isEmpty()){
 //不为空的情况
}else{
//为空的情况
}