我正在spring boot创建我的API。我认为一个产品是由以下部件组成的:
这里是我的代码:(实体层)
import javax.persistence.*;
import java.util.List;
import java.util.ArrayList;
@Table
@Entity
public class Product{
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany
@JoinColumn
private List<Component> productComponents = new ArrayList<>();
//default constructor
public Product(){
}
public Product(Long id, String name, List<Component> productComponents){
this.id = id;
this.name = name;
this.productComponents = productComponents;
}
//getters
public Long getId(){
return this.id;
}
public String getName(){
return this.name;
}
public List<Component> getProductComponents(){
return this.productComponents;
}
//setters
public void setId(Long id){
this.id = id;
}
public void setName(String name){
this.name = name;
}
public void setProductComponents(List<Component> productComponents){
this.productComponents = productComponents;
}
}
下面是我的Controller类:
package com.accounting.accounting.Controller;
import java.util.List;
@CrossOrigin
@RestController
@RequestMapping("/api/products/product")
public class ProductController {
private static ProductRepository myProductRepository;
@GetMapping("/get/all")
public List<Product> listProducts(){
return myProductRepository.findAll();
}
@PostMapping("/new")
public Product createNewProduct(@RequestBody Product myProduct){
return myProductRepository.save(myProduct);
}
@PutMapping("/update/{id}")
public Product updateProduct(@RequestBody Product myProduct, @PathVariable Long id){
return myProductRepository.findById(id).map((product) ->{
product.setName(myProduct.getName());
product.setProductComponents(myProduct.getProductComponents());
return myProductRepository.save(product);
}).orElseGet(() ->{
myProduct.setId(id);
return myProductRepository.save(myProduct);
});
}
}
我的问题:
在实体类“Product”中,对于类型为List的productComponents变量,getter和setter应该如上面所述,还是应该如下所示:
public List<Component> getProductComponents(){
return this.productComponents;
}
public void setProductComponents(Component productComponent){
this.productComponents.add(productComponent);
}
并将controller类中的update方法更改为:
@PutMapping("/update/{id}")
public Product updateProduct(@RequestBody Product myProduct, @PathVariable Long id){
return myProductRepository.findById(id).map((product) ->{
product.setName(myProduct.getName());
product.setProductComponents((Component) myProduct.getProductComponents());
return myProductRepository.save(product);
}).orElseGet(() ->{
myProduct.setId(id);
return myProductRepository.save(myProduct);
});
}
还是有更好的解决方案?
我更喜欢第一个。理性存在
product.setProductComponents((Component) myProduct.getProductComponents())
GetProductComponents
我假设很好地返回列表。这样做是行不通的
更好的主意是欢快的getter和setter dumbest。优点是您可以在将来使用lombok这样的库时省略它们
并且始终可以添加实用程序方法
我建议
public List<Component> getProductComponents(){
return this.productComponents;
}
public void setProductComponents(List<Component> productComponents){
this.productComponents = productComponents;
}
另外为了方便起见:
public void addProductComponent(Component component) {
this.productComponents.add(component);
}
public void removeProductComponent(Component component) {
this.productComponents.remove(component);
}
我不熟悉java和springboot。我正在尝试使用springboot创建一个CRUD应用程序。我使用MySQL存储数据。 员工模式- 员工资源库- 员工控制员- 上面的控制器在JSON对象数组表单中给出了结果,如下所示 但我需要以下表格的回复 非常感谢你的帮助。
对于此代码 kotlin编译器生成: 即使属性没有自定义getter或setter。可以使用注释删除冗余的get和set方法。所以这段代码 仅生成一个字段,无需其他方法。 但是有没有办法让kotlin编译器不为整个项目中的所有属性生成getter和setter?不管它是否有注释。也许是一些实验性编译器标志? 我想要它是因为我在kotlin上编写了android仪器测试。测试apk超过65k方法计数
如何将YAML列表加载到Spring框架项目中的Java列表(没有springboot)? 我看到它在springboot项目中与一起工作。但我无法让它在纯spring框架项目中使用。似乎注释无法正确解析列表。 下面是一个示例项目:https://github.com/KiranMohan/spring-yaml. 为了加载yaml文件,我使用了。 代码在jUnit类中进行测试。 输出is 示例y
在上面的例子中,让吸气剂同步有什么意义吗?
有时,我们可能需要基于 store 中的状态来计算推导状态,例如过滤一个项目列表,并对过滤结果进行计数: computed: { doneTodosCount () { return this.$store.state.todos.filter(todo => todo.done).length } } 如果多个组件需要用到这个推导后的状态,那我们就必须到处重复写该计算属性函数;或者将其