org.sfm.jdbc.spring.JdbcTemplateMapper Maven / Gradle / Ivy
package org.sfm.jdbc.spring;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.sfm.jdbc.JdbcMapper;
import org.sfm.utils.RowHandler;
import org.sfm.utils.ListHandler;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
public final class JdbcTemplateMapper implements RowMapper, PreparedStatementCallback>, ResultSetExtractor> {
private final JdbcMapper mapper;
public JdbcTemplateMapper(JdbcMapper mapper) {
this.mapper = mapper;
}
@Override
public T mapRow(ResultSet rs, int rowNum) throws SQLException {
return mapper.map(rs);
}
@Override
public List doInPreparedStatement(PreparedStatement ps) throws SQLException,
DataAccessException {
ResultSet rs = ps.executeQuery();
try {
return extractData(rs);
} finally {
rs.close();
}
}
public > PreparedStatementCallback newPreparedStatementCallback(final H handler) {
return new PreparedStatementCallback() {
@Override
public H doInPreparedStatement(
PreparedStatement ps)
throws SQLException, DataAccessException {
ResultSet rs = ps.executeQuery();
ResultSetExtractor resultSetExtractor = newResultSetExtractor(handler);
try {
return resultSetExtractor.extractData(rs);
} finally {
rs.close();
}
}
};
}
public > ResultSetExtractor newResultSetExtractor(final H handler) {
return new ResultSetExtractor() {
@Override
public H extractData(ResultSet rs) throws SQLException,
DataAccessException {
return mapper.forEach(rs, handler);
}
};
}
@Override
public List extractData(ResultSet rs) throws SQLException,
DataAccessException {
return mapper.forEach(rs, new ListHandler()).getList();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy