Salve ho creato questo semplice progetto con springboot che sostanzialmente mostra una lista di studenti nel database e permette di aggiungere modificare e eliminare uno studente volevo provare ad aggiungere anche un immaggine dello studente cha attualmente ha solo questi attributi (id,nome,cognome,email)
la prima domanda è per aggiungere un attributo che faccia riferimento alla foto cosa devo inserire ecco il codice
@Entity
@Table(name = "students")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_Name", nullable = false)
private String firstName;
@Column(name = "last_Name")
private String lastName;
@Column(name = "email")
private String email;
public Student() {
}
public Student(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
la seconda domanda è come posso modificare il metodo gia esistente che mi consente di salvare uno studente nel database in modo tale che quando crea un nuovo oggetto di tipo Studente gli venga passata anche l immaggine ecco il codice del metodo che salva lo studente.
studentRepository è solo un interfaccia vuota che estende JpaRepository.
@Service
public class StudentServiceImpl implements StudentService{
private StudentRepository studentRepository;
public StudentServiceImpl(StudentRepository studentRepository) {
super();
this.studentRepository = studentRepository;
}
@Override
public List<Student> getAllStudents() {
return studentRepository.findAll();
}
@Override
public Student saveStudent(Student student) {
return studentRepository.save(student);
}
il metodo viene infine chiamato dal controller che contiene questo codice e i relativi metodi
@Controller
public class StudentController {
private StudentService studentService;
public StudentController(StudentService studentService) {
super();
this.studentService = studentService;
}
@GetMapping("/students") //students fa riferimento un una pagina front end mappata con /students
//questo metodo ritorna la parte front end
public String listStudents(Model model) {
model.addAttribute("students",studentService.getAllStudents());
return "students";
}
@GetMapping("/students/new")
public String createStudentFormModel(Model model) {
Student student = new Student();
model.addAttribute("student",student);
return "create_student";
}
@PostMapping("/students")
public String saveStudent(@ModelAttribute("student") Student student) {
studentService.saveStudent(student);
return "redirect:/students";
}
@GetMapping("/students/edit/{id}")
public String editStudent(@PathVariable Long id, Model model) {
model.addAttribute("student", studentService.getStudentById(id));
return "edit_student";
}
@PostMapping("/students/{id}")
public String updateStudent(@PathVariable Long id,
@ModelAttribute("student") Student student,
Model model) {
// get student from database by id
Student existingStudent = studentService.getStudentById(id);
existingStudent.setId(id);
existingStudent.setFirstName(student.getFirstName());
existingStudent.setLastName(student.getLastName());
existingStudent.setEmail(student.getEmail());
// save updated student object
studentService.updateStudent(existingStudent);
return "redirect:/students";
}
@GetMapping("/students/{id}")
public String deleteStudent(@PathVariable Long id) {
studentService.deleteStudentById(id);
return "redirect:/students";
}
}