116 lines
4.2 KiB
Java
116 lines
4.2 KiB
Java
package com.cubetiqs.sql;
|
|
|
|
import com.cubetiqs.mapper.MapperProvider;
|
|
import com.cubetiqs.mapper.RowMapperProvider;
|
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Statement;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class JdbcDataQueryImpl implements JdbcDataQuery {
|
|
private final IDataManager manager;
|
|
|
|
public JdbcDataQueryImpl(IDataManager manager) {
|
|
this.manager = manager;
|
|
}
|
|
|
|
@Override
|
|
public IDataManager getManager() {
|
|
return manager;
|
|
}
|
|
|
|
@Override
|
|
public IExecuteResult<List<Object>> queryForList(String sql) {
|
|
ExecuteResult.ExecuteResultBuilder<List<Object>> builder = ExecuteResult.builder();
|
|
|
|
try (Statement statement = manager.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
builder.data(ResultSetUtil.getDataAsList(statement.executeQuery(sql)));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public IExecuteResult<List<Object>> queryForList(String sql, Object... args) {
|
|
ExecuteResult.ExecuteResultBuilder<List<Object>> builder = ExecuteResult.builder();
|
|
|
|
try (PreparedStatement statement = manager.getConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
ResultSetUtil.applyParameterized(statement, sql, args);
|
|
builder.data(ResultSetUtil.getDataAsList(statement.executeQuery()));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public IExecuteResult<Object> queryForObject(String sql) {
|
|
ExecuteResult.ExecuteResultBuilder<Object> builder = ExecuteResult.builder();
|
|
|
|
try (Statement statement = manager.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
builder.data(ResultSetUtil.getDataAsObject(statement.executeQuery(sql)));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public IExecuteResult<Object> queryForObject(String sql, Object... args) {
|
|
ExecuteResult.ExecuteResultBuilder<Object> builder = ExecuteResult.builder();
|
|
|
|
try (PreparedStatement statement = manager.getConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
ResultSetUtil.applyParameterized(statement, sql, args);
|
|
builder.data(ResultSetUtil.getDataAsObject(statement.executeQuery()));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public <R> IExecuteResult<R> query(MapperProvider<Map<String, Object>, R> mapper, String sql, Class<R> clazz) {
|
|
ExecuteResult.ExecuteResultBuilder<R> builder = ExecuteResult.builder();
|
|
|
|
try (Statement statement = manager.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
builder.data(ResultSetUtil.getDataAsType(mapper, statement.executeQuery(sql), clazz));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public <R> IExecuteResult<R> query(MapperProvider<Map<String, Object>, R> mapper, String sql, Class<R> clazz, Object... args) {
|
|
ExecuteResult.ExecuteResultBuilder<R> builder = ExecuteResult.builder();
|
|
|
|
try (PreparedStatement statement = manager.getConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
|
|
ResultSetUtil.applyParameterized(statement, sql, args);
|
|
builder.data(ResultSetUtil.getDataAsType(mapper, statement.executeQuery(), clazz));
|
|
} catch (SQLException ex) {
|
|
builder.error(ex);
|
|
}
|
|
|
|
return builder.build();
|
|
}
|
|
|
|
@Override
|
|
public <R> IExecuteResult<R> query(String sql, RowMapperProvider<R> mapper) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public <R> IExecuteResult<R> query(String sql, RowMapperProvider<R> mapper, Object... args) {
|
|
return null;
|
|
}
|
|
}
|