Hibernate/Spring引导:添加一个具有可选值的变量



我想了解一下如何使变量的值可选。为了实现这一点,我没有将变量名(可选(的值作为参数传递到saveproduct((方法中
当我尝试在Postman上执行它并插入变量productcode、name和photo(类型为Blob的后者(的相应值时,即使我尝试插入name的值,我也总是为null
我想知道的是:是否有必要将变量名作为参数传递,并可能手动将其设置为null?从那时起,我以后必须创建一个表单,如果我将相关字段留空,它会自动设置为null吗
你能建议我做点别的吗?

谢谢大家

产品.java

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import Model.Product;
@Entity
@Table(name="product")
public class Product {
@Id
private String prodcode; 
private String name; 

@Lob
private byte[] photo;
public Product() {
}
public Product(String prodcode, byte[] photo) {
this.prodcode = prodcode;
this.name = name;
this.photo = photo;
}
public String getProdcode() {
return prodcode;
}
public void setProdcode(String prodcode) {
this.prodcode = prodcode;
}
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
}


产品_DAO_Imp.java

package DAO;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import Model.Product;
@Repository
public class Product_DAO_Imp  implements Product_DAO{
@Autowired
private SessionFactory sessionFactory;

@Override
public boolean saveProduct(Product product) {
boolean status=false;
try {
sessionFactory.getCurrentSession().save(product);
status=true;
} catch (Exception e) {
e.printStackTrace();
}
return status;
}


// ....
// ....
// ....

}

产品_服务_Imp

package Service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import DAO.Product_DAO;
import Model.Product;
@Service
@Transactional
public class Product_Service_Imp implements Product_Service {

@Autowired
private Product_DAO productdao;

@Override
public boolean saveProduct(String prodcode, MultipartFile file) throws IOException {
Product product = new Product(prodcode, file.getBytes());

return productdao.saveProduct(product);
}


// ....
// ....
// ....

}

Controller.java

import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import Model.Product;
import Service.Product_Service;
@RestController
@CrossOrigin(origins="http://localhost:4200")
@RequestMapping(value="/api")
public class Controller {

@Autowired
private Product_Service productservice;

@PostMapping("save-product")
public boolean saveProduct(@RequestParam ("prodcode") String prodcode, @RequestParam ("file") MultipartFile file) throws IOException {
return productservice.saveProduct(prodcode, file);

}

// ....
// ....
// ....

}

如果您想在调用上述代码中的/api/save product端点时让name字段是可选的,那么在控制器中使用required=false(如下所示(可以达到的目的

@PostMapping("save-product")
public boolean saveProduct(@RequestParam("prodcode") String prodcode,
@RequestParam ("file") MultipartFile file,
@RequestParam(required = false) String name
) throws IOException {
return productservice.saveProduct(prodcode, file,name);
}

最新更新