Browse Source

Merge branch '5.1.x'

pull/22689/head
Sebastien Deleuze 6 years ago
parent
commit
6bf52ff8b9
  1. 6
      spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt
  2. 14
      spring-jdbc/src/test/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensionsTests.kt

6
spring-jdbc/src/main/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensions.kt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors
* Copyright 2002-2019 the original author or authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -34,7 +34,7 @@ inline fun <reified T : Any> JdbcOperations.queryForObject(sql: String): T? = @@ -34,7 +34,7 @@ inline fun <reified T : Any> JdbcOperations.queryForObject(sql: String): T? =
* @author Mario Arias
* @since 5.0
*/
fun <T : Any> JdbcOperations.queryForObject(sql: String, vararg args: Any, function: (ResultSet, Int) -> T): T? =
fun <T : Any?> JdbcOperations.queryForObject(sql: String, vararg args: Any, function: (ResultSet, Int) -> T): T? =
queryForObject(sql, RowMapper { resultSet, i -> function(resultSet, i) }, *args)
/**
@ -96,7 +96,7 @@ inline fun <reified T : Any> JdbcOperations.queryForList(sql: String, args: Arra @@ -96,7 +96,7 @@ inline fun <reified T : Any> JdbcOperations.queryForList(sql: String, args: Arra
* @author Mario Arias
* @since 5.0
*/
inline fun <reified T : Any> JdbcOperations.query(sql: String, vararg args: Any,
inline fun <reified T : Any?> JdbcOperations.query(sql: String, vararg args: Any,
crossinline function: (ResultSet) -> T): T? =
query(sql, ResultSetExtractor { function(it) }, *args)

14
spring-jdbc/src/test/kotlin/org/springframework/jdbc/core/JdbcOperationsExtensionsTests.kt

@ -46,6 +46,13 @@ class JdbcOperationsExtensionsTests { @@ -46,6 +46,13 @@ class JdbcOperationsExtensionsTests {
verify { template.queryForObject(eq(sql), any<RowMapper<Int>>(), eq(3)) }
}
@Test // gh-22682
fun `queryForObject with nullable RowMapper-like function`() {
val sql = "select age from customer where id = ?"
template.queryForObject(sql, 3) { _, _ -> null as Int? }
verify { template.queryForObject(eq(sql), any<RowMapper<Int?>>(), eq(3)) }
}
@Test
fun `queryForObject with reified type parameters and argTypes`() {
val sql = "select age from customer where id = ?"
@ -97,6 +104,13 @@ class JdbcOperationsExtensionsTests { @@ -97,6 +104,13 @@ class JdbcOperationsExtensionsTests {
verify { template.query(eq(sql), any<ResultSetExtractor<Int>>(), eq(3)) }
}
@Test // gh-22682
fun `query with nullable ResultSetExtractor-like function`() {
val sql = "select age from customer where id = ?"
template.query<Int?>(sql, 3) { _ -> null }
verify { template.query(eq(sql), any<ResultSetExtractor<Int?>>(), eq(3)) }
}
@Suppress("RemoveExplicitTypeArguments")
@Test
fun `query with RowCallbackHandler-like function`() {

Loading…
Cancel
Save