下記コードのDBからの検索結果パラメータのresultListがあり、
1レコードに日付・項目・金額
が入っており画像の場合6レコードがresultListに入っております。
画像のように日付ごとに金額と項目をを表示させたい場合はどのように
プログラムを書くべきか教えていただきたいです。
現状の一つめのコードはreturn時には1つの日付に1つ項目と1つの金額のみ入ってる状態です。
dto.setKoumokuで上書きされてるためだと思いますが。
二つ目のコードのほうがやりたいことには近いような気がしてます。
//DTOクラスの項目と金額のフィールドはString型のコード public List<KakeiboDto> setDto(List<Kakeibo> resultList) { List<KakeiboDto> DtoList = new ArrayList<KakeiboDto>(); KakeiboDto dto = new KakeiboDto(); String strDate= String.valueOf(resultList.get(0).getDate()); dto.setDate(strDate); for(Kakeibo entity : resultList) { //date 違う日付がある場合(8/16から8/18に切り替わるタイミング) if(!strDate.equals(String.valueOf(entity.getDate()))) { DtoList.add(dto); dto = new KakeiboDto(); dto.setDate(String.valueOf(entity.getDate())); strDate=String.valueOf(entity.getDate()); } dto.setKoumoku(entity.getKoumoku()); dto.setKingaku(entity.getKingaku()); } DtoList.add(dto); return DtoList; }
//DTOクラスの項目と金額のフィールドはList<String>型のコード public List<KakeiboDto> setDto(List<Kakeibo> resultList) { List<KakeiboDto> DtoList = new ArrayList<KakeiboDto>(); KakeiboDto dto = new KakeiboDto(); String strDate= String.valueOf(resultList.get(0).getDate()); dto.setDate(strDate); for(Kakeibo entity : resultList) { //date 違う日付がある場合(8/16から8/18に切り替わるタイミング) if(!strDate.equals(String.valueOf(entity.getDate()))) { DtoList.add(dto); dto = new KakeiboDto(); dto.setDate(String.valueOf(entity.getDate())); strDate=String.valueOf(entity.getDate()); } //変更点 当前ヌルポで落ちる dto.getKoumoku().add(entity.getKoumoku()); //変更点 dto.getKingaku().add(entity.getKingaku()); } DtoList.add(dto); return DtoList; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/23 01:10
2020/08/23 02:51