You use one or the other. A RowMapper is the preferred way for mapping one result object per row, ResultSetExtractor is for one result object for the entire ResultSet. There is no performance difference but the RowMapper does more for you and you don't have to iterate yourself.
Also make sure you type these so you don't need the casts.
To answer your question a ResultSetExtractor would usually look something like follows: (I would definitely look at initializing your Fund list in your Portfolio object that way it will never be null when you create a new Porfolio and you can just get it and add to it)
For this case a row mapper can do what you need an you can do away with the result set extractor altogether:
If there is more than one row then will get a list back in both cases.
Thats food for thought will code your way try it out, I like this I would definitely look at initializing your Fund list in your Portfolio object that way it will never be null when you create a new Porfolio it will remove that if block.