Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从我的服务层中的DB获取数据?_Java_Sql_Spring Boot_Kotlin - Fatal编程技术网

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

Java 如何从我的服务层中的DB获取数据?,java,sql,spring-boot,kotlin,Java,Sql,Spring Boot,Kotlin,在我的存储库getUserByNameAndAge中有一个方法,它通过2个参数从DB返回一个用户。在我的服务层中,我需要检查,如果我没有具有请求名称的In-DB用户,我需要抛出一些自定义InvalidUserNameException,如果我没有具有这样年龄的In-DB用户,我需要抛出一些自定义InvalidUserAgeException。但我真的不明白我该怎么做 这是我的存储库 interface UserRepository : JpaRepository<CountryLocali

在我的存储库getUserByNameAndAge中有一个方法,它通过2个参数从DB返回一个用户。在我的服务层中,我需要检查,如果我没有具有请求名称的In-DB用户,我需要抛出一些自定义InvalidUserNameException,如果我没有具有这样年龄的In-DB用户,我需要抛出一些自定义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?
}

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

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

    fun getUserByNameAndAge(name: String, age: Int): User =
        userRepository.getUserByNameAndAge(name, age)
}
首先,您需要实际使用存储库来获取数据。然后,您可能需要更改您的方法:1按id获取用户,如果没有获得任何内容,则抛出InvalidUserNameException;2如果有用户,则检查年龄,如果错误,则抛出InvalidUserAgeException。只需一个查询,您就可以检查姓名和年龄的组合,但如果没有得到任何结果,您无法判断哪些是无效的。
@Service
class UserServiceImpl : UserService {
    @Autowired
    lateinit var userRepository:UserRepository

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