各行は、この地図を返すようにRowMapperのを使用して<文字列、地図<文字列、リスト<Object> >>
School Class StudentID Name Age
123 8 811 John 10
123 8 812 Smith 11
123 8 821 John 12
123 8 822 Smith 13
123 9 911 John 14
123 9 912 Smith 15
456 8 811 John 10
456 8 812 Smith 11
ようになるだろう今私はこの
のような上記のデータを返すようにしたいですMap<String,Map<String,List<Object>>>
ie. Map<School,Map<Class,List<StudentID>>>
私はRowMapper
で春のJdbcTemplate
を使用していますが、私が得ることのできるのはすべての行のリストです。私はRowMapperでメインマップを維持することができないので(RowMapperクラス内に静的なマップを置くことができますか?これはwebserviceであり、後続の呼び出しが不正になる可能性があるので静的にしたくありません))私は、この行のリストを取得し、私が望むコレクションを作成するロジックを持っているだけです。
私はResultSetExtractor
について知りましたが、これを使用してこれを行う方法を見つけることができませんでした。
行マッパーや何らかの並べ替えを使用してこれを行う方法がある場合は、教えてください。または、これを解決する私の唯一の方法は、リストをもう一度繰り返し、私が望むものを得ることです。
EDIT: 私のクエリは、このような選択クエリです:
SELECT * from TABLENAME
、それが実際にJavaからResultSetを取得するために40分かかります。
CRONを使用して実行されるキャッシュオブジェクトをDB呼び出しで満たすためのものです。実際のREST呼び出しから40分遅れても問題ありません。キャッシュオブジェクトを参照します。しかし、私はできるだけ効率的にこれをやりたい。
また、このシナリオを処理できる方法が他にもある場合はお知らせください。すべてのREST呼び出しに対する通常のjdbc呼び出しは、1秒あたり100件の要求を取得するため、コストがかかります。
私はあなたのエンティティのそれぞれについて、 'DAO'クラスを持っていると仮定?あなたのDAOが 'List'の' Map'への変換を行い、それを外の世界に戻すのはなぜでしょうか? – CKing
jdbcTemplateの呼び出しはDAOの中にあり、RowMapperを使用してこれを行うことができるかどうかを知りたいと思います。 – v1shnu
基本的に、 'JdbcTemplate'が' Map'を作成してそれを使ってクエリを実行したいのですか?私はあなたが実装するソリューションは、最終的に 'List'を内部的に' Map'に変換することになると思いますので、 'DAO'にそれをさせてみませんか? – CKing