0

サイズがゼロではないにもかかわらず、以下のループでデータを取得する際に問題が発生しています。sysout 'data is' で 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>
4

4 に答える 4

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 に答える
0

コード全体を 2 行に変換できると思います。

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 に答える