我在获取下面循环中的数据时遇到问题,即使大小不为零,我在sysout'数据中得到null'。那有什么问题?
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);
IMPL
<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>
答案 0 :(得分: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*
java中Long
的默认值为null
。因此,在您的案例中,您需要额外检查null
。
答案 1 :(得分:0)
将isSearch.equals
支票纳入null
支票
if(isSearch != null)
{
if (isSearch.equals(0))
{
isSearchValue = false;
}
else
{
isSearchValue = true;
}
}
但是,最好修改domainItemMapper.getIsSearchable(34372);
方法的代码,以便它根本不会使用null
填充列表。
答案 2 :(得分:0)
似乎您的列表包含null
文字。并且List
支持null作为值。
答案 3 :(得分:0)
根据您的评论
数据有null,0和1数据。我想只返回0和1的数据。
您需要像这样修复您的查询
select is_searchable from t_field where parent_field_id=#{parentFieldId} and is_searchable is not NULL;