0

我在下面的循环中获取数据时遇到问题,即使大小不为零,我在 sysout 的“数据是”中得到空值。那里有什么问题?

List<Long> dd = domainItemMapper.getIsSearchable(34372);
    System.out.println("the test is-" + dd.size());
    for (int i = 0; i < dd.size(); i++) {
        Long isSearch = dd.get(i);
        System.out.println("data is"+dd.get(i));
        if (isSearch.equals(0)) {
            isSearchValue = false;
        } else
            isSearchValue = true;
    }

对数据库的调用是mybatis调用,如下界面

List<Long> getIsSearchable(@Param("parentFieldId") long parentFieldId);

暗示

<mapper namespace="com.ge.dbt.common.persistence.IFormValidatorMapper">

        <select id="getIsSearchable" statementType="CALLABLE"
        resultType="Long">
        select is_searchable from t_field where parent_field_id=#{parentFieldId}
    </select>

</mapper>
4

4 回答 4

0

我猜你的整个代码可以转换成两行。

if(dd!= null && !dd.isEmpty())
 return dd.contains(0);//Contains Guard you in such cases because equals check
                       //happen on passed element ie *0*

Longjava 中的默认值为null. 因此,您需要对null您的情况进行额外检查。

于 2012-09-27T09:20:09.770 回答
0

isSearch.equals在支票中附上您的null支票

if(isSearch != null)
{
    if (isSearch.equals(0)) 
    {             
        isSearchValue = false;         
    } 
    else             
    {
       isSearchValue = true;
    }
}

但是,最好修改domainItemMapper.getIsSearchable(34372);方法的代码,以便它根本不会填充列表null

于 2012-09-27T09:20:21.890 回答
0

似乎您的列表包含null文字。并且List支持 null 作为值。

于 2012-09-27T09:25:13.777 回答
0

根据您的此评论

数据有 null、0 和 1 数据。我只想返回 0 和 1 的数据。

您需要像这样修复您的查询

 select is_searchable from t_field where parent_field_id=#{parentFieldId} and is_searchable is not NULL;
于 2012-09-27T09:29:44.283 回答