From 794626e08adea585950e243310e7f4a0ecebb8b7 Mon Sep 17 00:00:00 2001 From: Sergey Lukichev Date: Tue, 3 Mar 2020 21:39:52 +0100 Subject: [PATCH] service --- Drafts/dbdemo/pom.xml | 5 +++ .../src/main/java/de/telran/Application.java | 11 +++++ .../telran/controller/StudentController.java | 40 +++++++++++++++++++ .../main/java/de/telran/model/Student.java | 20 ++++++++++ .../telran/repository/StudentRepository.java | 16 ++++++++ .../de/telran/service/StudentService.java | 31 ++++++++++++++ 6 files changed, 123 insertions(+) create mode 100644 Drafts/dbdemo/src/main/java/de/telran/Application.java create mode 100644 Drafts/dbdemo/src/main/java/de/telran/controller/StudentController.java create mode 100644 Drafts/dbdemo/src/main/java/de/telran/model/Student.java create mode 100644 Drafts/dbdemo/src/main/java/de/telran/repository/StudentRepository.java create mode 100644 Drafts/dbdemo/src/main/java/de/telran/service/StudentService.java diff --git a/Drafts/dbdemo/pom.xml b/Drafts/dbdemo/pom.xml index dc3d196..c769aaa 100644 --- a/Drafts/dbdemo/pom.xml +++ b/Drafts/dbdemo/pom.xml @@ -54,6 +54,11 @@ org.flywaydb flyway-core + + org.projectlombok + lombok + true + diff --git a/Drafts/dbdemo/src/main/java/de/telran/Application.java b/Drafts/dbdemo/src/main/java/de/telran/Application.java new file mode 100644 index 0000000..603f352 --- /dev/null +++ b/Drafts/dbdemo/src/main/java/de/telran/Application.java @@ -0,0 +1,11 @@ +package de.telran; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/Drafts/dbdemo/src/main/java/de/telran/controller/StudentController.java b/Drafts/dbdemo/src/main/java/de/telran/controller/StudentController.java new file mode 100644 index 0000000..09442e3 --- /dev/null +++ b/Drafts/dbdemo/src/main/java/de/telran/controller/StudentController.java @@ -0,0 +1,40 @@ +package de.telran.controller; + +import de.telran.model.Student; +import de.telran.service.StudentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class StudentController { + + StudentService service; + + @Autowired + public StudentController(StudentService service) { + this.service = service; + } + + @GetMapping + List getAllStudents() { + return service.getAllStudents(); + } + + @PostMapping("/api/students") + Student createStudent(@RequestBody Student student) { + return service.createStudent(student); + } + + @PutMapping("/api/students") + Student assignStudentToCourse(@RequestBody Student student) { + service.assignStudentToCourse(student); + return service.getStudentById(student.getStudentId()); + } + +} diff --git a/Drafts/dbdemo/src/main/java/de/telran/model/Student.java b/Drafts/dbdemo/src/main/java/de/telran/model/Student.java new file mode 100644 index 0000000..b93754d --- /dev/null +++ b/Drafts/dbdemo/src/main/java/de/telran/model/Student.java @@ -0,0 +1,20 @@ +package de.telran.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; +import org.springframework.lang.Nullable; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Data +@Entity +@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) +public class Student { + private @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long studentId; + private String firstName; + private String lastName; + private @Nullable Long courseId; +} diff --git a/Drafts/dbdemo/src/main/java/de/telran/repository/StudentRepository.java b/Drafts/dbdemo/src/main/java/de/telran/repository/StudentRepository.java new file mode 100644 index 0000000..7cdd25f --- /dev/null +++ b/Drafts/dbdemo/src/main/java/de/telran/repository/StudentRepository.java @@ -0,0 +1,16 @@ +package de.telran.repository; + +import de.telran.model.Student; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; + +public interface StudentRepository extends JpaRepository { + + @Transactional + @Modifying + @Query("UPDATE Student s SET s.courseId = :courseId WHERE s.studentId = :studentId") + int assignStudentToCourse(@Param("studentId") long studentId, @Param("courseId") long courseId); +} diff --git a/Drafts/dbdemo/src/main/java/de/telran/service/StudentService.java b/Drafts/dbdemo/src/main/java/de/telran/service/StudentService.java new file mode 100644 index 0000000..8c270b8 --- /dev/null +++ b/Drafts/dbdemo/src/main/java/de/telran/service/StudentService.java @@ -0,0 +1,31 @@ +package de.telran.service; + +import de.telran.model.Student; +import de.telran.repository.StudentRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class StudentService { + + @Autowired + StudentRepository repository; + + public List getAllStudents() { + return repository.findAll(); + } + + public Student createStudent(Student student) { + return repository.save(student); + } + + public void assignStudentToCourse(Student student) { + repository.assignStudentToCourse(student.getStudentId(), student.getCourseId()); + } + + public Student getStudentById(Long id) { + return repository.getOne(id); + } +}