All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sfm.jdbc.spring.JdbcTemplateMapper Maven / Gradle / Ivy

Go to download

Java library to map flat record - ResultSet, csv - to java object with minimum configuration and low footprint.

There is a newer version: 1.10.3
Show newest version
package org.sfm.jdbc.spring;

import org.sfm.jdbc.JdbcMapper;
import org.sfm.utils.ListHandler;
import org.sfm.utils.RowHandler;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

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 - 2024 Weber Informatics LLC | Privacy Policy