@RequestBody,@PathVariable和@RequestParam代码实例
时间: 2023-11-15 17:00:06 浏览: 88
@RequestBody注解用于将HTTP请求正文中的JSON或XML数据绑定到方法的参数上。示例代码如下:
@PostMapping("/users")
public User createUser(@RequestBody User user){
//创建用户
}
@PathVariable注解用于从URL中获取参数值。示例代码如下:
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id){
//根据id获取用户信息
}
@RequestParam注解用于从查询字符串或表单数据中获取单个参数值。示例代码如下:
@GetMapping("/users")
public List<User> getUsersByRole(@RequestParam String role){
//根据角色获取用户列表
}
注意:以上三个注解可以同时使用,但是要注意它们的使用场景和参数类型。
相关问题
Spring Data的代码实例
下面是一个简单的 Spring Data 的代码实例,使用了 Spring Data JPA 和 Hibernate。
1. 定义实体类
```java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
// getter、setter、构造函数等省略
}
```
2. 创建 Repository 接口
```java
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
```
3. 编写 Service 类
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findByName(String name) {
return userRepository.findByName(name);
}
public User save(User user) {
return userRepository.save(user);
}
public void delete(Long id) {
userRepository.deleteById(id);
}
}
```
4. 使用 Service 类
```java
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getUsers(@RequestParam(required = false) String name) {
if (name != null) {
return userService.findByName(name);
} else {
return userService.findAll();
}
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
```
springboot用注解写一个入参对象中的参数不能为null的实例
可以使用JSR 303的注解来实现参数校验,具体步骤如下:
1. 在入参对象中添加校验注解,例如 @NotNull、@NotBlank、@NotEmpty 等。
```java
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
private String password;
// getter/setter 省略
}
```
2. 在 Controller 中使用 @Validated 注解开启参数校验,并使用 BindingResult 对象接收校验结果。
```java
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@PostMapping("/login")
public String login(@RequestBody @Valid User user, BindingResult result) {
if (result.hasErrors()) {
return result.getAllErrors().get(0).getDefaultMessage();
}
// 登录逻辑
}
}
```
在上述示例中,@Validated 注解开启了参数校验,@RequestBody 注解表示请求体中的数据将被映射到 User 对象中,@Valid 注解表示需要对 User 对象进行校验,BindingResult 对象接收校验结果,如果校验失败,则从 BindingResult 中获取第一个错误信息返回给客户端。
需要注意的是,如果使用 @RequestParam 或 @PathVariable 注解来接收参数,则需要在相应参数上添加 JSR 303 的校验注解,例如 @NotNull、@NotBlank、@NotEmpty 等。
阅读全文