Belajar Membuat Restful Dengan Spring Boot (JPA & MySQL) (Part 2)
Belajar Membuat Restful Dengan Spring Boot (JPA & MySQL) (Part 2)
Dependencies:
DevTools
JPA
MySQL
Beri nama pada bagian project, description, packagce dan lain lain kemudian klik next.
Login ke medium.com dengan Google
chaerul bachri
chaerul8s@gmail.com
Pada bagian dependency, tambahkan dependency DevTools, Web, JPA, dan MySQL. Kita
bisa mencari dependency tersebut di kolom pencarian kemudian klik finish.
STS akan secara otomatis mendownload dependency yang dibutuhkan. Kita bisa
mendownload maven dengan cara menekan Alt+F5 atau klik kanan pada project >
maven > update project..
Login ke medium.com dengan Google
chaerul bachri
chaerul8s@gmail.com
Kita bisa menambahkan dependency baru dengan cara buka file pom.xml di direktori
dan memasukan dependency baru diantara tag <dependencies> </ dependency>.
Kemudian update project lagi
spring.datasource.url = jdbc:mysql://localhost:3306/spring_book?useSSL=false
spring.datasource.username =root
spring.datasource.password =
spring.jpa.properties.hibernate.dialect =
org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto = update
Login ke medium.com dengan Google
Membuat model
Kita akan membuat model “buku” dengan penamaan mengikuti camelcase java dan
penjelasan :
Tambahkan package model pada project, dengan cara klik kanan pada
chaerul bachri
chaerul8s@gmail.com
@EntityListeners(AuditingEntityListener.class)
@Id
@GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)
@NotBlank
@NotBlank
private String namaDepanPengarang;
Login ke medium.com dengan Google
@NotBlank
@Temporal (TemporalType.TIMESTAMP)
@CreatedDate
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
@GeneratedValue
@Temporal digunakan untuk merubah data berupa tanggal dan waktu dari
database dan ke database
1 package com.example.springbook.model;
2
3 import org.hibernate.validator.constraints.NotBlank;
4 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5 import org.springframework.data.annotation.CreatedDate;
6 import org.springframework.data.annotation.LastModifiedDate;
7 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
8 import javax.persistence.*;
9 import java.io.Serializable;
10 import java.util.Date;
11
12 @Entity Login ke medium.com dengan Google
13 @Table(name = "books")
14 @EntityListeners(AuditingEntityListener.class) chaerul bachri
15 @JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)
chaerul8s@gmail.com
16
17 public class Buku implements Serializable{
LANJUTKAN SEBAGAI CHAERUL
18
19 @Id Untuk membuat akun, Google akan membagikan nama,
20 alamat email, dan gambar profil Anda kepada medium.com.
@GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
21 private Long id; persyaratan layanan medium.com.
22
23 @NotBlank
24 private String titleBook;
25
26 @NotBlank
27 private String namaDepanPengarang;
28
29 @NotBlank
30 private String namaBelakangPengarang;
31
32 @NotBlank
33 private int statusPeminjaman;
34
35 @NotBlank
36 private String namaPeminjam;
37
38 @Column(nullable = false, updatable = false)
39 @Temporal (TemporalType.TIMESTAMP)
40 @CreatedDate
41 private Date createdAt;
42
43 @Column(nullable = false)
44 @Temporal(TemporalType.TIMESTAMP)
45 @LastModifiedDate
46 private Date updatedAt;
47
48 public Long getId() {
49 return id;
50 }
51
52 public String getTitleBook() {
53 return titleBook;
54 }
55
55
56 public String getNamaDepanPengarang() {
Login ke medium.com dengan Google
57 return namaDepanPengarang;
58 }
59 chaerul bachri
60 public String getNamaBelakangPengarang() { chaerul8s@gmail.com
61 return namaBelakangPengarang;
62 } LANJUTKAN SEBAGAI CHAERUL
63
64 public int getStatusPeminjaman() { Untuk membuat akun, Google akan membagikan nama,
alamat email, dan gambar profil Anda kepada medium.com.
65 return statusPeminjaman; Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
66 }
67
68 public String getNamaPeminjam() {
69 return namaPeminjam;
70 }
71
72 public Date getCreatedAt() {
73 return createdAt;
74 }
75
76 public Date getUpdatedAt() {
77 return updatedAt;
78 }
79
80 public void setId(Long id) {
81 this.id = id;
82 }
83
84 public void setTitleBook(String titleBook) {
85 this.titleBook = titleBook;
86 }
87
88 public void setNamaDepanPengarang(String namaDepanPengarang) {
89 this.namaDepanPengarang = namaDepanPengarang;
90 }
91
92 public void setNamaBelakangPengarang(String namaBelakangPengarang) {
93 this.namaBelakangPengarang = namaBelakangPengarang;
94 }
95
96 public void setStatusPeminjaman(int statusPeminjaman) {
97 this.statusPeminjaman = statusPeminjaman;
98 }
99
100 public void setNamaPeminjam(String namaPeminjam) {
101 this.namaPeminjam = namaPeminjam; Login ke medium.com dengan Google
102 }
103
chaerul bachri
104 public void setCreatedAt(Date createdAt) {
chaerul8s@gmail.com
105 this.createdAt = createdAt;
106 }
LANJUTKAN SEBAGAI CHAERUL
107
108 public void setUpdatedAt(Date updatedAt) {
Untuk membuat akun, Google akan membagikan nama,
109 this.updatedAt = updatedAt; alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
110 } persyaratan layanan medium.com.
111 }
Enable JPA
Tambahkan anotasi @EnableJpaAuditing pada class SpringBookAplicaiton.java
sehingga menjadi
1 package com.example.springbook;
2
3 import org.springframework.boot.SpringApplication;
4 import org.springframework.boot.autoconfigure.SpringBootApplication;
5 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
6
7 @SpringBootApplication
8 @EnableJpaAuditing
9 public class SpringBookApplication {
10
11 public static void main(String[] args) {
12 SpringApplication.run(SpringBookApplication.class, args);
13 }
14 }
Membuat repository
Repository digunakan untuk mengakses data dari database. Pada dokumentasi ini, kita
menggunakan JpaRepository
Buat package baru dengan nama com.example.springbook.repository
Login ke medium.com dengan Google
Tambahkan class baru dengan nama BukuRepository.java
chaerul bachri
chaerul8s@gmail.com
tambahkan implements JpaRepository <Buku, Long> dan anotasi @Repository
hasil keseluruhan
1 package com.example.springbook.repository;
2
3 import java.util.List;
4
5 import org.springframework.data.jpa.repository.JpaRepository;
6 import org.springframework.data.jpa.repository.Query;
7 import org.springframework.stereotype.Repository;
8
9 import com.example.springbook.model.Buku;
10
11 @Repository
12 public interface BukuRepository extends JpaRepository<Buku, Long> {
13 List<Buku> findByStatusPeminjaman (int statusPeminjaman);
14 List<Buku> findByTitleBook(String titleBook);
15 }
Membuat controller
Buat package baru dengan nama com.example.springbook.repository
@Autowired
BukuRepository bukuRepository; }
@GetMapping(“/”)
return bukuRepository.findAll(); }
Menambah buku
@PostMapping("/")
return bukuRepository.save(buku); }
@PutMapping(“/{id}”)
LANJUTKAN SEBAGAI CHAERUL
public ResponseEntity<Buku> updateBuku(@PathVariable(value=”id”)Long
id, @Valid @RequestBody Buku detailbuku){
Untuk membuat akun, Google akan membagikan nama,
alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
Buku buku = bukuRepository.findOne(id);
persyaratan layanan medium.com.
if(buku == null)
return ResponseEntity.notFound().build();
buku.setTitleBook(detailbuku.getTitleBook());
buku.setNamaDepanPengarang(detailbuku.getNamaDepanPengarang());
buku.setNamaBelakangPengarang(detailbuku.getNamaBelakangPengarang());
buku.setNamaPeminjam(detailbuku.getNamaPeminjam());
buku.setStatusPeminjaman(detailbuku.getStatusPeminjaman());
return ResponseEntity.ok(updatedBuku); }
Men-delete buku
@DeleteMapping(“/{id}”)
Mendapatkan data by Id
@GetMapping(“/{id}”)
if(buku == null)
return ResponseEntity.notFound().build();
return ResponseEntity.ok().body(buku);
Sorting buku
@GetMapping("/sortbuku")
Login ke medium.com dengan Google
@GetMapping("/sortstatus/{statusPeminjaman}")
return bukuRepository.findByStatusPeminjaman(statusPeminjaman);
keselurhan code :
1 package com.example.springbook.controller;
2
3 import java.util.List;
4
5 import javax.validation.Valid;
6
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.http.ResponseEntity;
9 import org.springframework.web.bind.annotation.DeleteMapping;
10 import org.springframework.web.bind.annotation.GetMapping;
i i f k b bi d i h i bl
11 import org.springframework.web.bind.annotation.PathVariable;
12 import org.springframework.web.bind.annotation.PostMapping;
Login ke medium.com dengan Google
13 import org.springframework.web.bind.annotation.PutMapping;
14 import org.springframework.web.bind.annotation.RequestBody;
15 chaerul bachri
import org.springframework.web.bind.annotation.RequestMapping;
chaerul8s@gmail.com
16 import org.springframework.web.bind.annotation.RequestParam;
17 import org.springframework.web.bind.annotation.RestController;
18 LANJUTKAN SEBAGAI CHAERUL
19 import com.example.springbook.model.Buku;
Untuk membuat akun, Google akan membagikan nama,
20 import com.example.springbook.repository.BukuRepository;
alamat email, dan gambar profil Anda kepada medium.com.
21 Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
22 @RestController
23 @RequestMapping("/buku")
24 public class BukuController {
25
26 @Autowired
27 BukuRepository bukuRepository;
28
29
30 @GetMapping("/")
31 public List<Buku> getAll(){
32 return bukuRepository.findAll();
33 }
34
35 @PostMapping("/")
36 public Buku tambahbuku(@Valid @RequestBody Buku buku) {
37 return bukuRepository.save(buku);
38 }
39
40 @PutMapping("/{id}")
41 public ResponseEntity<Buku> updateBuku(@PathVariable(value="id")Long id,
42 @Valid @RequestBody Buku detailbuku){
43 Buku buku = bukuRepository.findOne(id);
44 if(buku == null)
45 return ResponseEntity.notFound().build();
46 buku.setTitleBook(detailbuku.getTitleBook());
47 buku.setNamaDepanPengarang(detailbuku.getNamaDepanPengarang());
48 buku.setNamaBelakangPengarang(detailbuku.getNamaBelakangPengarang());
49 buku.setNamaPeminjam(detailbuku.getNamaPeminjam());
50 buku.setStatusPeminjaman(detailbuku.getStatusPeminjaman());
51 Buku updatedBuku = bukuRepository.save(buku);
52 return ResponseEntity.ok(updatedBuku);
53 }
54
55 @DeleteMapping("/{id}")
56 public String deleteBuku(@PathVariable (value="id") Long id){
57 Buku buku = bukuRepository.findOne(id); Login ke medium.com dengan Google
58 String result = "";
59 if(buku == null) {
chaerul bachri
60 result = "id "+id+" tidak ditemukan"; chaerul8s@gmail.com
61 return result;
62 }
LANJUTKAN SEBAGAI CHAERUL
63 result = "id "+id+" berhasil di hapus";
64 bukuRepository.delete(id); Untuk membuat akun, Google akan membagikan nama,
65 return result; alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
66 } persyaratan layanan medium.com.
67
68 @GetMapping("/{id}")
69 public ResponseEntity<Buku> getBukuById(@PathVariable(value="id") Long id){
70 Buku buku = bukuRepository.findOne(id);
71 if(buku == null)
72 return ResponseEntity.notFound().build();
73 return ResponseEntity.ok().body(buku);
74 }
75
76 @GetMapping("/sortbuku")
77 public List<Buku> sortbuku(@RequestParam(value="title")String titleBook){
78 return bukuRepository.findByTitleBook(titleBook);
79 }
80
81 @GetMapping("/sortstatus/{statusPeminjaman}")
82 public List<Buku> sortstatus(@PathVariable(value="statusPeminjaman") int statusPeminjaman){
83 return bukuRepository.findByStatusPeminjaman(statusPeminjaman);
84 }
85
86
87 }
Testing aplikasi
GetAll
Login ke medium.com dengan Google
chaerul bachri
chaerul8s@gmail.com
Menambah buku
Meng-update buku
Login ke medium.com dengan Google
chaerul bachri
Meng-delete buku
chaerul8s@gmail.com
Mendapatkan data by Id
Sorting buku
Login ke medium.com dengan Google
chaerul bachri
chaerul8s@gmail.com
Spring Boot