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;

/**
 * Provide integration point with Spring JdbcTemplate.
 * 

* It implements {@link org.springframework.jdbc.core.RowMapper}, {@link org.springframework.jdbc.core.PreparedStatementCallback} and {@link org.springframework.jdbc.core.ResultSetExtractor}. * Because some JdbcTemplate template signature match against a few of those type you might need to downcast, declare the variable with a specific type or use the type specific method in {@link org.sfm.jdbc.spring.JdbcTemplateMapperFactory}. * *

* * * class MyDao {
*     private final JdbcTemplateMapper<DbObject> mapper =
*         JdbcTemplateMapperFactory.newInstance().newMapper(DbObject.class);
*     private final RowMapper<DbObject> rowMapper = mapper;
*
*     public void doSomething() {
*         List<DbObject> results = template.query(DbHelper.TEST_DB_OBJECT_QUERY, rowMapper);
*     }
*
*     public void doSomethingElse() {
*         template
*             .query(TEST_DB_OBJECT_QUERY,
*             mapper.newResultSetExtractor((o) -> System.out.println(o.toString())));
*     }
* }
*
* * @param the mapped type * @see org.sfm.jdbc.JdbcMapperFactory * @see org.sfm.jdbc.JdbcMapper * @see org.sfm.jdbc.spring.JdbcTemplateMapperFactory#newPreparedStatementCallback(Class) * @see org.sfm.jdbc.spring.JdbcTemplateMapperFactory#newResultSetExtractor(Class) * @see org.sfm.jdbc.spring.JdbcTemplateMapperFactory#newRowMapper(Class) * */ 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(); } } @Override public List extractData(ResultSet rs) throws SQLException, DataAccessException { return mapper.forEach(rs, new ListHandler()).getList(); } 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); } }; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy