使用Spring JPARepository获取Name和Price属性的null值并保存到Mysql

sg24os4d  于 2023-05-28  发布在  Spring
关注(0)|答案(2)|浏览(115)

我面临的问题是获取Name和Price属性的null值,并使用Spring bootJPA使用接口JpaRepository保存到Mysql。它只将数据cid保存到mysql db中,所有其他字段都为MySql Db中的Name和price字段保存null。我用的是MySQL数据库。

POJO类

@Data
@Entity
@Table(name = "COURSE_DTLS")
public class Course {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer cid;
    private String name;
    private Double price;
}

回购类

import java.io.Serializable;

import org.springframework.data.jpa.repository.JpaRepository;

import in.ashokit.binding.Course;

public interface CourseRepository extends JpaRepository<Course, Serializable> {

}

服务等级

@Service
public class CourseServiceImpl implements CourseService {

    @Autowired
    private CourseRepository courseRepo;

    @Override
    public String upsert(Course course) {

        courseRepo.save(course); // upsert (insert / update based on PK)

        return "success";
    }

    @Override
    public Course getById(Integer cid) {
        Optional<Course> findById = courseRepo.findById(cid);

        if (findById.isPresent()) {
            return findById.get();
        }
        return null;
    }

    @Override
    public List<Course> getAllCourses() {
        return courseRepo.findAll();
    }

    @Override
    public String deleteById(Integer cid) {
        if (courseRepo.existsById(cid)) {
            courseRepo.deleteById(cid);
            return "Delete Success";
        } else {
            return "No Record Found";
        }
    }

}

控制器类

@RestController
public class CourseRestController {

    @Autowired
    private CourseService courseService;

    @PostMapping("/course")
    public ResponseEntity<String> createCourse(@RequestBody Course course) {
        String status = courseService.upsert(course);
        return new ResponseEntity<>(status, HttpStatus.CREATED);
    }

    @GetMapping("/course/{cid}")
    public ResponseEntity<Course> getCourse(@PathVariable Integer cid) {
        Course course = courseService.getById(cid);
        return new ResponseEntity<>(course, HttpStatus.OK);
    }

    @GetMapping("/courses")
    public ResponseEntity<List<Course>> getAllCourses() {
        List<Course> allCourses = courseService.getAllCourses();
        return new ResponseEntity<>(allCourses, HttpStatus.OK);
    }

    @PutMapping("/course")
    public ResponseEntity<String> updateCourse(@RequestBody Course course) {
        String status = courseService.upsert(course);
        return new ResponseEntity<>(status, HttpStatus.OK);
    }

    @DeleteMapping("/course/{cid}")
    public ResponseEntity<String> deleteCourse(@PathVariable Integer cid) {
        String status = courseService.deleteById(cid);
        return new ResponseEntity<>(status, HttpStatus.OK);
    }

}

bihw5rsg

bihw5rsg1#

JpaRepository中的第二个值应该是实体类的主键类型,在本例中为Integer。按如下方式更改Repo类:

public interface CourseRepository extends JpaRepository<Course, Integer> {

}
ruarlubt

ruarlubt2#

你的仓库是错误的。
更改此:

JpaRepository<Course, Serializable>

像这样:

JpaRepository<Course, Integer>

相关问题