Способ, который я сделал в одном из моих проектов, заключается в том, что я следовал тому, что Spring делает с шаблоном JDBC, и придумал каркас Query.По сути, создайте общий класс, который может принимать операторы select или pl / sql и связывать параметры.Если запрос возвращает набор результатов, также передайте Rowmapper.Этот объект rowmapper будет вызываться платформой для преобразования каждой строки в объект любого типа.
Пример -
Query execute = new Query("{any select or pl/sql}",
// Inputs and Outputs are for bind variables.
new SQL.Inputs(Integer.class, ...),
// Outputs is only meaningful for PL/SQL since the
// ResultSetMetaData should be used to obtain queried columns.
new SQL.Outputs(String.class));
Если вы хотите rowmapper -
Query execute = new Query("{any select or pl/sql}",
// Inputs and Outputs are for bind variables.
new SQL.Inputs(Integer.class, ...),
// Outputs is only meaningful for PL/SQL since the
// ResultSetMetaData should be used to obtain queried columns.
new SQL.Outputs(String.class), new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Actor actor = new Actor();
actor.setFirstName(rs.getString("first_name"));
actor.setSurname(rs.getString("surname"));
return actor;
});
Наконец, класс Row - это вывод, который будет иметь список объектов, если вы передали RowMapper -
for (Row r : execute.query(conn, id)) {
// Handle the rows
}
Вы можете заняться фантазией и использовать шаблоны, чтобы гарантировать безопасность типов.