天天看點

對List使用操作并進行拆分分頁操作

在項目中往往會要求對多表資料進行查詢操作,而兩表中的資料隻有編号相關聯,但查詢條件中要根據其中一張表中的電話号碼來查詢資訊,這樣我們必須要先根據電話号碼來查詢編号,再通過編号參數來執行查詢操作。但往往一個電話号碼又可能對應多條資訊(即多個編号),這樣操作起來就比較麻煩!正常方法就是循環操作,這樣就大大降低了效率!

下面來看看我的操作:

1.首先取出電話号碼資訊,儲存在一個list中(注意此List中隻包含編号字段)

List objslist =null;

if(form.getPhoneNumber()!=null && form.getPhoneNumber().length()>0)

{

phoneNumber =form.getPhoneNumber();

[color=red]objslist =vehicleDs.queryVehicleNumber(phoneNumber);[/color] }

2.查詢另一張表中的所有資料,然後去比較有相同的編号的資料,儲存在list中

list = consumptionRecordDs.querySQLResults(vehicleNumber, mainmeternumber,form.getCodeId(),startTime,endTime, convertString2Timestamp(tingcbeginTime), convertString2Timestamp(tingcendTime), convertString2Timestamp(likbeginTime), convertString2Timestamp(likendTime),form.getConsumptionMoneybegin(),form.getConsumptionMoneyend());

if(list!=null && list.size()>0)

{

UrpcsConsumptionRecord crecord =null;

for(int j=0;j<list.size();j++)

{

crecord =(UrpcsConsumptionRecord)list.get(j);

String veNumber =crecord.getVehicleNumber();

if([color=red]objslist.contains(veNumber))[/color] {

dList.add(crecord);

}else{

continue;

}

}

}

[color=red]注意:紅色部分文字,用list與string作比較,取出具有相同編号的對象[/color],關于List.contains()的使用,可以檢視java API

這樣我就查詢出了具有同一手機号碼的所有相關資料,但是現在要對這個list進行分頁,又出現了問題!

3.對list進行分頁操作

count =dList.size(); //取出總記錄數

if(count/form.getPageSize()==0 && count%form.getPageSize()>0)

{

fromIndex=0;

toIndex =count;

}else

{

if(count/form.getPageSize()>=1 && count % form.getPageSize()>=0)

{

fromIndex =form.getPageSize() * (form.getPageNo()-1);

if(form.getPageSize() * form.getPageNo() >=count)

{

toIndex =count;

}else{

toIndex =form.getPageSize() * form.getPageNo();

}

}

}

[color=red]dataList =dList.subList(fromIndex, toIndex);[/color]

注意:紅色字型部分就是對整個list按照每頁記錄數進行拆分。

JAVA API中有對List.subList(formIndex,toIndex)的解釋,大家可以自尋查找!

繼續閱讀