Java POST、DELTE、GET操作RestController带复合键的弹簧引导
我正在寻找使用JPA在控制器类中实现此操作(删除、发布、获取)的正确方法 下面是我的代码,我不确定post是否正确,但确实是delete导致了问题,因为Apache组件中的HttpDelete并没有请求主体的setEntity方法 道:Java POST、DELTE、GET操作RestController带复合键的弹簧引导,java,spring,rest,Java,Spring,Rest,我正在寻找使用JPA在控制器类中实现此操作(删除、发布、获取)的正确方法 下面是我的代码,我不确定post是否正确,但确实是delete导致了问题,因为Apache组件中的HttpDelete并没有请求主体的setEntity方法 道: @Repository public interface PiecesReparationDAO extends JpaRepository<PiecesReparation, Integer>{ PiecesReparation findB
@Repository
public interface PiecesReparationDAO extends JpaRepository<PiecesReparation, Integer>{
PiecesReparation findById(PieceRId id);
PiecesReparation findById_Id_produit(int id);
PiecesReparation findById_Id_Reparation(int id);
void deleteById(PieceRId id);
}
分段分类:
@Embeddable
public class PieceRId implements Serializable {
int id_produit;
int id_reparation;
//implements equals and hashCode
public int getIdProduit(){
return this.id_produit;
}
public int getIdReparation(){
return this.id_reparation;
}
public PieceRId(){
}
public PieceRId(int id_produit, int id_reparation){
this.id_produit=id_produit;
this.id_reparation=id_reparation;
}
@Override
public boolean equals(Object o){
if(o ==null) return false;
if(((PieceRId)o).getIdProduit() == this.getIdProduit() &&
((PieceRId)o).getIdReparation() == this.getIdReparation())
return true;
else return false;
}
@Override
public int hashCode() {
return Integer.valueOf(String.valueOf(id_produit)+String.valueOf(id_reparation));
}
}
控制员:
@RestController
public class PiecesReparationController {
@Autowired
private PiecesReparationDAO piecesReparationDao;
@GetMapping(value = "/Pieces")
public ArrayList<PiecesReparation> listePiecesReparations() {
ArrayList<PiecesReparation> listePiecesReparations= new ArrayList() ;
Iterable<PiecesReparation> piecesReparations = piecesReparationDao.findAll();
MappingJacksonValue produitsFiltres = new MappingJacksonValue(piecesReparations);
for (Iterator<PiecesReparation> i = piecesReparations.iterator(); i.hasNext();) {
PiecesReparation item = i.next();
listePiecesReparations.add(item);
}
return listePiecesReparations;
}
//Récupérer un produit par son Id
@GetMapping(value = "/Pieces/{id}")
public PiecesReparation selectionPiecesReparation(@PathVariable PieceRId id) {
return piecesReparationDao.findById(id);
}
//ajouter un produit
@PostMapping(value = "/Pieces")
public ResponseEntity<?> ajouterPiecesReparation(@RequestBody PieceReparationDTO pieceReparation) {
PiecesReparation pieceR = new PiecesReparation();
pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
PiecesReparation piecesReparationAdded = piecesReparationDao.save(pieceR);
if (piecesReparationAdded == null)
return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY);
else return new ResponseEntity<>(HttpStatus.CREATED);
}
@DeleteMapping(value = "/Pieces/{id}")
public void supprimerPiecesReparation(@PathVariable PieceRId id) {
piecesReparationDao.delete(id);
}
@DeleteMapping(value = "/Pieces")
public void supprimerPiecesReparation2(@RequestBody PieceRId id) {
PiecesReparation pieceR= new PiecesReparation();
pieceR.setPieceRId(new PieceRId(id.getIdProduit(),id.getIdReparation()));
piecesReparationDao.delete(pieceR);
}
@PutMapping (value = "/Pieces")
public void updateProduit(@RequestBody PieceReparationDTO pieceReparation) {
PiecesReparation pieceR = new PiecesReparation();
pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
PiecesReparation piecesReparationAdded = piecesReparationDao.save(pieceR);
}
}
我知道如何使用url和path变量删除,但不知道如何使用请求体,因为没有setEntity方法。我不确定其他操作是否正确执行。谢谢。如果您的ID类型是
PieceRId
,为什么要将存储库ID类型定义为Integer
?请忘记它,谢谢。我做了更改,我必须通过以下方式更改findById:可选findById(PieceRId Id);不知道什么是可选的,因为与findBydId(ID)冲突CRUD RepositoryID足以删除。为什么你需要身体?如果您需要此方法,请使用post方法。我们如何将path变量与对象PieceRId一起使用?我们使用PieceRId new HttpDelete的JSonString表示(getUrl(type)+“/”+JSONSTRINGPICEID)?
@RestController
public class PiecesReparationController {
@Autowired
private PiecesReparationDAO piecesReparationDao;
@GetMapping(value = "/Pieces")
public ArrayList<PiecesReparation> listePiecesReparations() {
ArrayList<PiecesReparation> listePiecesReparations= new ArrayList() ;
Iterable<PiecesReparation> piecesReparations = piecesReparationDao.findAll();
MappingJacksonValue produitsFiltres = new MappingJacksonValue(piecesReparations);
for (Iterator<PiecesReparation> i = piecesReparations.iterator(); i.hasNext();) {
PiecesReparation item = i.next();
listePiecesReparations.add(item);
}
return listePiecesReparations;
}
//Récupérer un produit par son Id
@GetMapping(value = "/Pieces/{id}")
public PiecesReparation selectionPiecesReparation(@PathVariable PieceRId id) {
return piecesReparationDao.findById(id);
}
//ajouter un produit
@PostMapping(value = "/Pieces")
public ResponseEntity<?> ajouterPiecesReparation(@RequestBody PieceReparationDTO pieceReparation) {
PiecesReparation pieceR = new PiecesReparation();
pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
PiecesReparation piecesReparationAdded = piecesReparationDao.save(pieceR);
if (piecesReparationAdded == null)
return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY);
else return new ResponseEntity<>(HttpStatus.CREATED);
}
@DeleteMapping(value = "/Pieces/{id}")
public void supprimerPiecesReparation(@PathVariable PieceRId id) {
piecesReparationDao.delete(id);
}
@DeleteMapping(value = "/Pieces")
public void supprimerPiecesReparation2(@RequestBody PieceRId id) {
PiecesReparation pieceR= new PiecesReparation();
pieceR.setPieceRId(new PieceRId(id.getIdProduit(),id.getIdReparation()));
piecesReparationDao.delete(pieceR);
}
@PutMapping (value = "/Pieces")
public void updateProduit(@RequestBody PieceReparationDTO pieceReparation) {
PiecesReparation pieceR = new PiecesReparation();
pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
PiecesReparation piecesReparationAdded = piecesReparationDao.save(pieceR);
}
}
public static void deleteRest(int id, String type){
try{
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpDelete deleteRequest = new HttpDelete(getUrl(type)+"/"+id);
HttpResponse response=client.execute(deleteRequest);
System.out.print("response code :
"+response.getStatusLine().getStatusCode());
client.close();
}catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}