请写一个根据用户名查询用户信息的两层(controller、service、serviceimpl)接口
时间: 2024-02-05 08:04:24 浏览: 28
好的,以下是一个根据用户名查询用户信息的两层接口(controller、service、serviceImpl):
UserController.java
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{username}")
public UserDTO getUserByUsername(@PathVariable String username) {
return userService.getUserByUsername(username);
}
}
```
UserService.java
```java
public interface UserService {
UserDTO getUserByUsername(String username);
}
```
UserServiceImpl.java
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public UserDTO getUserByUsername(String username) {
Optional<User> userOptional = userRepository.findByUsername(username);
if (userOptional.isPresent()) {
return UserDTO.fromUser(userOptional.get());
} else {
throw new UserNotFoundException("User not found with username: " + username);
}
}
}
```
其中,`UserDTO` 是一个数据传输对象,用于传输用户信息,`UserRepository` 是一个用于访问数据库的接口,`UserNotFoundException` 是一个自定义的异常类,用于表示用户不存在的情况。这里的实现方式是采用了 Spring Boot 框架,使用 JPA 操作数据库。