如何从我的服务层中的数据库获取数据?

时间:2021-03-26 10:34:52

标签: java sql spring-boot kotlin

我的存储库 getUserByNameAndAge() 中有一个方法,它通过 2 个参数从 DB 返回一个用户。在我的服务层我需要检查,如果我没有请求名称的数据库用户,我需要抛出一些自定义InvalidUserNameException,如果我没有这样年龄的数据库用户,我需要抛出一些自定义 InvalidUserAgeException。但我真的不明白我怎么能做到这一点。

这是我的仓库

interface UserRepository : JpaRepository<CountryLocalization?, Long?> {
    @Query(value = "SELECT u.name, u.age FROM users AS u" +
            " WHERE u.name = :name AND u.age = :age",
        nativeQuery = true)
    fun getUserByNameAndAge(
        @Param("name") name: String,
        @Param("age") age: Int
    ): User?
}

那么我该如何实施我的服务?

@Service
class UserServiceImpl (val userRepository: UserRepository) : UserService {
    override fun getUserByNameAndAge(name: String, age: Int): User {    
        /// implementation   
    }
}

1 个答案:

答案 0 :(得分:1)

你不应该实现存储库接口,而是将它注入到你的服务中。您可以使用 @Autowired 注释来做到这一点,并且只需在您的方法中使用它。像这样:

@Service
class UserServiceImpl : UserService {
    @Autowired
    lateinit var userRepository:UserRepository

    fun getUserByNameAndAge(name: String, age: Int): User =
        userRepository.getUserByNameAndAge(name, age)
}