Hi guys,
In few of my previous posts I mentioned about an API from Google called Guava. This API has a class called ListMultiMap. Today I am going to show you how you can use ListMultiMap to use the database ResultSet more efficiently.
This will give developers a clear visibility regarding the column names and the values associated with them and also will help to retrieve values when performing iteration.
ResultSetToListMultiMap.java
import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.List; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; /** * This class converts ResultSet into ListMultiMap * * @author Nitesh Apte * @license GPL */ public class ResultSetToListMultiMap { /** * Converts ResultSet to ListMultiMap * * @param resultSet * @return */ public ListMultimap<String, String> resultSetToListMultiMap(ResultSet resultSet) { ListMultimap<String, String> multimap = null; try{ multimap = ArrayListMultimap.create(); ResultSetMetaData rsmd = resultSet.getMetaData(); int columnCount = rsmd.getColumnCount(); List<String> s1 = new ArrayList<String>(); for (int i = 1; i < columnCount+1; i++ ) { s1.add(rsmd.getColumnName(i)); } while (resultSet.next()) { for(int i=0;i<s1.size();i++) { multimap.put(s1.get(i), resultSet.getString(s1.get(i))); } } } catch (Exception e) { e.printStackTrace(); } return multimap; } }
I understand, something like this can be achieved using HashMap but I will suggest to use ListMultiMap as it is more memory efficient.
That’s it for today guys.
Critics/suggestion are very much welcome.
Have a nice day ahead.
Leave a Reply