Ich brauche etwas wie dynamische Rückgabetyp von meiner Funktion. Mein Code ist in diesem Moment wie:Dynamische Rückgabetypen durch Java Generics
@Repository
public class SswltDataDAO {
private static final Logger logger = LoggerFactory.getLogger(SswltDataDAO.class);
private JdbcTemplate jdbcTemplate;
@Autowired
@Qualifier("dataSource_sswlt")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<Object> getSswltData(String tableName, String sql, Class className) {
List<Object> listOfOblects = null;
try{
listOfOblects = jdbcTemplate.query(sql, new BeanPropertyRowMapper(className));
}catch(Exception e){
logger.error("\n\nException while importing data from "+tableName+":\n", e);
listOfOblects = null;
e.printStackTrace();
}
return listOfOblects;
}
}
Und die Verwendung von Methode ist: dataImportFromSswltToIwproImp()
Class MainService {
public boolean dataImportFromSswltToIwproImp() {
.......
List<Object> list = sswltDataDAO.getSswltData("tbl_sswltdata_addresses", "select * from tbl_sswltdata_addresses", SswltdataAddresses.class);
.........;
}
}
Mit Generics I Methode getSswltData() in einer solchen Art und Weise schreiben möchten, dass eher dann List<Object>
zurückgeben sollte es List<class name>
dh Liste der Objekte des Klassentyps, nicht der Objektklassenobjekte dynamisch zurückgeben. Bitte beachten Sie, dass "Klassenname" die Klasse ist, die beim Aufruf von getSwltData() übergeben wird. Dies ist der dynamische Teil des Codes.
Ich bin gespannt, ob es noch möglich ist oder nicht? Ich bin flexibel genug, um jeden Teil meines Codes zu ändern, so dass alle Vorschläge willkommen sind.
Danke. frage mich nur, wie man selbst in diese Zeile einwirft: listOfObjects = jdbcTemplate.query (sql, new BeanPropertyRowMapper (className)); Welche Änderungen muss ich in diese Zeile einfügen? – Shashank
Grundsätzlich 'listOfObjects = (List) ...' - aber bitte lesen Sie die Warnung, die ich im letzten Satz gegeben habe. – Thomas