package pl.net.bluesoft.rnd.pt.utils.jdbc;
import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import pl.net.bluesoft.rnd.pt.utils.jdbc.convert.ConvertingBeanProcessor;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
public class SimpleQueryJdbcConnector implements JdbcConnector {
private static final Logger logger = Logger.getLogger(SimpleQueryJdbcConnector.class.getName());
private QueryRunner run;
public SimpleQueryJdbcConnector(DataSource dataSource) {
this.run = new QueryRunner(dataSource);
}
@Override
public <T> List<T> query(Class<T> outputType, String sql, Object... params) throws SQLException {
logger.warning("Executing SQL: " + sql + " for class: " + outputType.getName() + " with parameters: " + Arrays.toString(params));
return run.query(sql, new BeanListHandler<T>(outputType, new BasicRowProcessor(new ConvertingBeanProcessor())), params);
}
@Override
public List<Map<String, Object>> query(String sql, Object... params) throws SQLException {
logger.warning("Executing SQL: " + sql + " with parameters: " + Arrays.toString(params));
return run.query(sql, new MapListHandler(), params);
}
}