JdbcTemplate: add queryOne method
This commit is contained in:
@@ -2,6 +2,7 @@ package ghast.database;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface JdbcOperations {
|
public interface JdbcOperations {
|
||||||
|
|
||||||
@@ -9,6 +10,8 @@ public interface JdbcOperations {
|
|||||||
|
|
||||||
<T> T query(String sql, ResultSetExtractor<T> rse) throws DataAccessException;
|
<T> T query(String sql, ResultSetExtractor<T> rse) throws DataAccessException;
|
||||||
|
|
||||||
|
<T> Optional<T> queryOne(String sql, ResultSetExtractor<T> rse) throws DataAccessException;
|
||||||
|
|
||||||
<T> List<T> queryList(String sql, RowMapper<T> rowMapper) throws DataAccessException;
|
<T> List<T> queryList(String sql, RowMapper<T> rowMapper) throws DataAccessException;
|
||||||
|
|
||||||
Map<String, Object> queryForMap(String sql) throws DataAccessException;
|
Map<String, Object> queryForMap(String sql) throws DataAccessException;
|
||||||
|
|||||||
@@ -59,6 +59,17 @@ public class JdbcTemplate implements JdbcOperations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> Optional<T> queryOne(String sql, ResultSetExtractor<T> rse) throws DataAccessException {
|
||||||
|
return query(sql, rs -> {
|
||||||
|
if (rs.next()) {
|
||||||
|
return Optional.ofNullable(rse.extractData(rs));
|
||||||
|
} else {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(String sql, final RowMapper<T> rowMapper) throws DataAccessException {
|
public <T> List<T> queryList(String sql, final RowMapper<T> rowMapper) throws DataAccessException {
|
||||||
return query(sql, rs -> {
|
return query(sql, rs -> {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import java.sql.SQLException;
|
|||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.StringJoiner;
|
import java.util.StringJoiner;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -99,6 +100,17 @@ class JdbcTemplateTest {
|
|||||||
assertEquals(DATA[0][1], value);
|
assertEquals(DATA[0][1], value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testQuery_Simple_Optional() {
|
||||||
|
String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''",
|
||||||
|
TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]);
|
||||||
|
|
||||||
|
Optional<Integer> optValue = jdbcTemplate.queryOne(sql, rs -> rs.getInt(1));
|
||||||
|
|
||||||
|
assertTrue(optValue.isPresent());
|
||||||
|
assertEquals(DATA[0][1], optValue.get());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testQuery_Simple_List() {
|
void testQuery_Simple_List() {
|
||||||
String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}'' OR {1} LIKE ''{4}''",
|
String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}'' OR {1} LIKE ''{4}''",
|
||||||
|
|||||||
Reference in New Issue
Block a user