Java 如何从我的服务层中的DB获取数据?
在我的存储库getUserByNameAndAge中有一个方法,它通过2个参数从DB返回一个用户。在我的服务层中,我需要检查,如果我没有具有请求名称的In-DB用户,我需要抛出一些自定义InvalidUserNameException,如果我没有具有这样年龄的In-DB用户,我需要抛出一些自定义InvalidUserAgeException。但我真的不明白我该怎么做 这是我的存储库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
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)
}