Eclipse中Spring Boot向MySQL插数据返回200但数据库无数据
Spring Boot接口返回200但MySQL数据库无新增数据
我在Eclipse中使用Java Spring Boot向本地MySQL数据库添加数据,接口返回200状态码,但数据库里看不到新增的数据行。
Controller端点代码
@PostMapping("/addFood") public ResponseEntity<String> addFood(@RequestBody FoodDto foodDto){ try { FoodDto savedFoodObject = dietService.addFood(foodDto); if(savedFoodObject != null && savedFoodObject.getName() != null) { return ResponseEntity.ok("Update successful"); } else { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Update failed for unknown reasons."); } }catch(Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } }
Service方法代码
public FoodDto addFood(FoodDto foodDto) { Food foodModel = FoodMapper.INSTANCE.toFood(foodDto); Food food = foodRepository.save(foodModel); return FoodMapper.INSTANCE.toFoodDto(food); }
foodRepository是继承JPARepository的接口实例,模型类为Food,DTO类为FoodDto。调试时能看到service中的food对象不为空,且包含PostMan请求传入的所有预期值,映射器工作正常,接口返回"Update successful"。
我检查了application.properties和compose.yaml配置,确认无误,且项目已通过标注@Entity的Food模型类成功创建food表。
compose.yaml配置
services: mysql: image: 'mysql:latest' environment: - 'MYSQL_DATABASE=dietplan_database' - 'MYSQL_ROOT_PASSWORD=PASSWORD' (本地环境已硬编码实际密码,此处替换为"PASSWORD") ports: - '3307:3306'
application.properties配置
spring.jpa.hibernate.ddl-auto=update spring.application.name=dietPlanFullStackApplication spring.datasource.url=jdbc:mysql://localhost:3306/dietplan_database spring.datasource.username=root spring.datasource.password=PASSWORD (密码同上处理) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.show-sql=true
Food模型类代码
package com.dietPlan.models; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @Entity public class Food { @Id @GeneratedValue private Long id; private String name; private Integer calories; private Integer protein; private Integer carbs; private Integer sugar; private Integer fat; @Column(name = "saturated_fat") private Integer saturatedFat; private Integer sodium; private Integer potassium; private Boolean has_multiplier; public Long getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getCalories() { return calories; } public void setCalories(Integer calories) { this.calories = calories; } public Integer getProtein() { return protein; } public void setProtein(Integer protein) { this.protein = protein; } public Integer getCarbs() { return carbs; } public void setCarbs(Integer carbs) { this.carbs = carbs; } public Integer getSugar() { return sugar; } public void setSugar(Integer sugar) { this.sugar = sugar; } public Integer getFat() { return fat; } public void setFat(Integer fat) { this.fat = fat; } public Integer getSaturatedFat() { return saturatedFat; } public void setSaturatedFat(Integer saturatedFat) { this.saturatedFat = saturatedFat; } public Integer getSodium() { return sodium; } public void setSodium(Integer sodium) { this.sodium = sodium; } public Integer getPotassium() { return potassium; } public void setPotassium(Integer potassium) { this.potassium = potassium; } public Boolean getHasMultiplier() { return has_multiplier; } public void setHasMultiplier(Boolean has_multiplier) { this.has_multiplier = has_multiplier; } }
预期数据库中会出现与请求体对应的新增数据行,但实际数据库中数据行数为0。
内容的提问来源于stack exchange,提问作者Chris Pichler
相关产品推荐
相关产品推荐

