Это может быть или не быть полезным, но вот как я это делаю, используя Spring JDBC. Сначала нужно создать некоторую процедуру:
DELIMITER //
DROP PROCEDURE IF EXISTS my_procedure //
CREATE PROCEDURE my_procedure(
OUT id INT,
OUT name VARCHAR(70),
OUT other VARCHAR(1024)
)
BEGIN
SELECT
...
FROM
...
GROUP BY
...
END //
DELIMITER ;
Затем выполнить запрос с использованием Spring JDBC RowMappers:
JdbcTemplate jt = new JdbcTemplate(DB.getDataSource(DB_User));
List<Details> list = jt.query(MyProcedureRowMapper.QUERY,
new Object[] {}, new MyProcedureRowMapper());
Если запрос выглядит следующим образом:
public static final String Query = "{ CALL my_procedure(@id, @name, @other) }";