Skip to content

Commit 9e3dd22

Browse files
author
Peter Vestlin
committed
Fixade inject.
1 parent ef9710e commit 9e3dd22

File tree

4 files changed

+50
-49
lines changed

4 files changed

+50
-49
lines changed

src/main/kotlin/nu/westlin/kartrepo/Application.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Bean
99
open class Application {
1010

1111
@Bean
12-
open fun init(repository: KartRepository) = CommandLineRunner {
12+
open fun init(repository: JdbcKartRepository) = CommandLineRunner {
1313
repository.store(Driver("pwestlin", "Peter", "Westlin"))
1414
repository.store(Driver("awestlin", "Adam", "Westlin"))
1515
repository.store(Driver("fwestlin", "Felix", "Westlin"))
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package nu.westlin.kartrepo
2+
3+
import org.springframework.beans.factory.annotation.Autowired
4+
import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException
5+
import org.springframework.jdbc.core.JdbcOperations
6+
import org.springframework.jdbc.core.RowMapper
7+
import org.springframework.stereotype.Repository
8+
import java.sql.ResultSet
9+
import java.sql.SQLException
10+
11+
@Repository
12+
open class JdbcKartRepository @Autowired constructor(var jdbcOperations: JdbcOperations) : KartRepository {
13+
14+
override fun store(user: Driver) {
15+
val rows: Int = jdbcOperations.update("insert into driver(alias, firstname, lastname) values(?,?,?)",
16+
user.alias, user.firstname, user.lastname)
17+
if (rows != 1)
18+
throw JdbcUpdateAffectedIncorrectNumberOfRowsException("Expected 1 row, got $rows", 0, rows)
19+
}
20+
21+
override fun load(alias: String): Driver {
22+
return jdbcOperations.queryForObject("select alias,firstname,lastname from driver where alias=?", DriverRowMapper(), alias)
23+
}
24+
25+
override fun all(): List<Driver> {
26+
return jdbcOperations.query<Driver>("select alias,firstname,lastname from driver", DriverRowMapper())
27+
}
28+
29+
class DriverRowMapper : RowMapper<Driver> {
30+
31+
@Throws(SQLException::class)
32+
override fun mapRow(rs: ResultSet, rowNum: Int): Driver {
33+
return Driver(
34+
rs.getString("alias"),
35+
rs.getString("firstname"),
36+
rs.getString("lastname")
37+
)
38+
}
39+
40+
}
41+
42+
}
43+

src/main/kotlin/nu/westlin/kartrepo/KartController.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,10 @@ package nu.westlin.kartrepo
33
import org.springframework.beans.factory.annotation.Autowired
44
import org.springframework.dao.IncorrectResultSizeDataAccessException
55
import org.springframework.http.HttpStatus
6-
import org.springframework.jdbc.core.JdbcOperations
76
import org.springframework.web.bind.annotation.*
87

98
@RestController
10-
open class KartController @Autowired constructor(val kartRepository: KartRepository, val jdbcOperations: JdbcOperations) {
11-
12-
init {
13-
println("jdbcOperations = ${jdbcOperations}")
14-
println("kartRepository = ${kartRepository}")
15-
println("kartRepository.jdbcOperations = ${kartRepository.jdbcOperations}")
16-
// Jag får inte jdbcOperations att sättas automatiskt :(
17-
kartRepository.jdbcOperations = jdbcOperations
18-
println("kartRepository.jdbcOperations = ${kartRepository.jdbcOperations}")
19-
}
20-
9+
open class KartController @Autowired constructor(val kartRepository: KartRepository) {
2110

2211
@RequestMapping("/driver")
2312
fun greeting(@RequestParam(value = "username", defaultValue = "pwestlin") username: String): Driver {
Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,13 @@
11
package nu.westlin.kartrepo
22

3-
import org.springframework.beans.factory.annotation.Autowired
4-
import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException
53
import org.springframework.jdbc.core.JdbcOperations
6-
import org.springframework.jdbc.core.RowMapper
7-
import org.springframework.stereotype.Repository
8-
import org.springframework.transaction.PlatformTransactionManager
9-
import java.sql.ResultSet
10-
import java.sql.SQLException
114

12-
@Repository
13-
// jdbcOperations ska vara val och inte var men jag får inte jdbcOperations att sättas automatiskt :(
14-
open class KartRepository @Autowired constructor(var jdbcOperations: JdbcOperations, val transactionManager: PlatformTransactionManager) {
5+
interface KartRepository {
156

16-
fun store(user: Driver) {
17-
val rows: Int = jdbcOperations.update("insert into driver(alias, firstname, lastname) values(?,?,?)",
18-
user.alias, user.firstname, user.lastname)
19-
if (rows != 1)
20-
throw JdbcUpdateAffectedIncorrectNumberOfRowsException("Expected 1 row, got $rows", 0, rows)
21-
}
7+
fun store(user: Driver)
228

23-
fun load(alias: String): Driver {
24-
return jdbcOperations.queryForObject("select alias,firstname,lastname from driver where alias=?", DriverRowMapper(), alias)
25-
}
9+
fun load(alias: String): Driver
2610

27-
class DriverRowMapper : RowMapper<Driver> {
11+
fun all(): List<Driver>
2812

29-
@Throws(SQLException::class)
30-
override fun mapRow(rs: ResultSet, rowNum: Int): Driver {
31-
return Driver(
32-
rs.getString("alias"),
33-
rs.getString("firstname"),
34-
rs.getString("lastname")
35-
)
36-
}
37-
38-
}
39-
40-
fun all(): List<Driver> {
41-
return jdbcOperations.query<Driver>("select alias,firstname,lastname from driver", DriverRowMapper())
42-
}
43-
44-
}
13+
}

0 commit comments

Comments
 (0)