Anda di halaman 1dari 20

Login ke medium.

com dengan Google

Belajar Membuat Restful dengan Spring chaerul bachri


chaerul8s@gmail.com

Boot (JPA & MySQL) [Part 2] LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


Gwoks Follow alamat email, dan gambar profil Anda kepada medium.com.
Mar 18, 2018 · 6 min read Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.

terlebih dahulu lakukan instalasi di tutorial ini

Dependencies:

DevTools

JPA

MySQL

Membuat project baru


Buka aplikasi STS. Kemudian klik

File > New > New Spring Starter Project.

Beri nama pada bagian project, description, packagce dan lain lain kemudian klik next.
Login ke medium.com dengan Google

chaerul bachri
chaerul8s@gmail.com

LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.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

Hasil struktur direktori nya


LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.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

Membuat database dan konfigurasi


Buka xampp dan buat database baru dengan nama “spring_book” tanpa tanda kutip.

Pada STS direktori src/main/resource buka application.properties dan ketikan :

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

spring.datasource.url diisi alamat database yang chaerul


tadi telah dibuat, yaitu spring_book
bachri
chaerul8s@gmail.com
spring.datasource.username dan spring.datasource.password diisi username dan
password pada database tersebut LANJUTKAN SEBAGAI CHAERUL

spring.jpa.hibernate.ddl-auto = update digunakan


Untuk membuatagar
akun, JPA secara
Google otomatis
akan membagikan nama,
alamat email, dan gambar profil Anda kepada medium.com.
memetakan setiap perubahan model. Sebagai contoh, table
Dengan melanjutkan, akan secara
Anda menyetujui otomaris
kebijakan privasi dan
persyaratan layanan medium.com.
dibuat apabila belum ada dan akan meng-update setiap perubahan nama.

Membuat model
Kita akan membuat model “buku” dengan penamaan mengikuti camelcase java dan
penjelasan :

Id : id pada buku, dengan autoincrement

titleBook : String judul pada buku, NOT NULL

namaDepanPengarang : String nama depan pengarang, NOT NULL

namaBelakangPengarang : String nama belakang pengarang, NOT NULL

statusPeminjaman : int status peminjaman, NOT NULL

namaPeminjam : String nama peminjam, NOT NULL

createdAt : Date pembuatan buku, TIMESTAMP

updatedAt : Date update pada buku, TIMESTAMP

Tambahkan package model pada project, dengan cara klik kanan pada

package com.example.springbook > new > package

Pada bagian name, ketikan


com.example.springbook.model
Login ke medium.com dengan Google

chaerul bachri
chaerul8s@gmail.com

LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
Buat class pada package tersebut dengan nama “Buku.java”. kemudian ketikan :

@Entity @Table(name = “books”)

@EntityListeners(AuditingEntityListener.class)

@JsonIgnoreProperties(value = {“createdAt”, “updatedAt”},


allowGetters = true)

@Table digunakan untuk membuat table baru dengan nama “books”

@EntityListeners(AuditingEntityListener.class) merupakan entity dari JPA yang


digunakan untuk meng-update data

@JsonIgnoreProperties(value = {“createdAt”, “updatedAt”}, allowGetters = true)


digunakan agar data pada variable tersebut tidak bisa dimasukan secara manual.

Dalam class berisi :

@Id

@GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)

private Long id;

@NotBlank

private String titleBook;

@NotBlank
private String namaDepanPengarang;
Login ke medium.com dengan Google
@NotBlank

private String namaBelakangPengarang; chaerul bachri


chaerul8s@gmail.com
@NotBlank
LANJUTKAN SEBAGAI CHAERUL
private int statusPeminjaman;
Untuk membuat akun, Google akan membagikan nama,
@NotBlank alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
private String namaPeminjam;

@Column(nullable = false, updatable = false)

@Temporal (TemporalType.TIMESTAMP)

@CreatedDate

private Date createdAt;

@Column(nullable = false)

@Temporal(TemporalType.TIMESTAMP)

@LastModifiedDate

private Date updatedAt;

@Id digunakan untuk memdefinisikan primary key

@GeneratedValue

@NotBlank digunakan agar isi pada field nya NOT NULL

@Column digunakan untuk memberikan pengaturan tambahan pada kolom


tersebut

@Temporal digunakan untuk merubah data berupa tanggal dan waktu dari
database dan ke database

@CreatedDate digunakan untuk mendapatkan waktu dibuatnya data

@LastModifiedDate digunakan untuk mendapatkan waktu terakhir data diedit


Spring akan otomatis membuat atau membaca kolom dari database berdasarkan
Login ke medium.com
camelcase dengan underscore. Contoh namaPeminjam dengan
akan dibuat atauGoogle
dibaca dari
kolom nama_peminjam pada database
chaerul bachri
chaerul8s@gmail.com
Kemudian tambahkan getter dan setter pada project dengan cara klik kanan > source >
generate getter and setter
LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.

Pilih select all > ok.

keseluruhan isi class Buku.java

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 }

Buku.java hosted with ❤ by GitHub view raw

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 }

SpringBookApplication.java hosted with ❤ by GitHub view raw

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

di dalam class, tambahkan query sebagai berikut : LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
List<Buku> findByStatusPeminjaman (int statusPeminjaman);
persyaratan layanan medium.com.

List<Buku> findByTitleBook(String titleBook);

kita bisa melihat query lain pada dokumentasi JPA disini

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 }

BukuRepository.java hosted with ❤ by GitHub view raw

Membuat controller
Buat package baru dengan nama com.example.springbook.repository

Tambahkan class dengan nama BukuController.java


Tambahkan anotasi @RestController untuk menandakan bahwa class ini merupakan
Loginbuku
controller @RequestMapping(“buku”) untuk slash ke medium.com dengan
ketika mulai Google
digunakan

Hasilnya menjadi : chaerul bachri


chaerul8s@gmail.com

@RestController LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


@RequestMapping(“/buku”) alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
public class BukuController { persyaratan layanan medium.com.

@Autowired

BukuRepository bukuRepository; }

Membuat GetAll buku

@GetMapping(“/”)

public List<Buku> getAll(){

return bukuRepository.findAll(); }

@GetMapping digunakan agar http request yang digunakan adalah GET

Findall() digunakan agar me-return semua list buku

Menambah buku

@PostMapping("/")

public Buku tambahbuku(@Valid @RequestBody Buku buku) {

return bukuRepository.save(buku); }

@GetMapping digunakan agar http request yang digunakan adalah POST


@Valid digunakan agar isi ketika di post valid atau tidak ada yang kosong
Login ke medium.com dengan Google
Meng-update buku
chaerul bachri
chaerul8s@gmail.com

@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());

Buku updatedBuku = bukuRepository.save(buku);

return ResponseEntity.ok(updatedBuku); }

@PathVariable digunakan untuk mendapatkan data dari id ketika diketikan di url.


Contoh http://localhost:8080/buku/1

Apabila id tidak ada di list, akan direspon error

Men-delete buku

@DeleteMapping(“/{id}”)

public String deleteBuku(@PathVariable (value=”id”) Long id){

Buku buku = bukuRepository.findOne(id);

String result = “”;


if(buku == null) {
Login ke medium.com dengan Google
result = “id “+id+” tidak ditemukan”;

return result; chaerul bachri


chaerul8s@gmail.com
}
LANJUTKAN SEBAGAI CHAERUL
result = “id “+id+” berhasil di hapus”;
Untuk membuat akun, Google akan membagikan nama,
bukuRepository.delete(id); alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
return result; }

@PathVariable digunakan untuk mendapatkan data dari id ketika diketikan di url.


Contoh http://localhost:8080/buku/1

Apabila id tidak ada di list, akan direspon error

Mendapatkan data by Id

@GetMapping(“/{id}”)

public ResponseEntity<Buku> getBukuById(@PathVariable(value=”id”)


Long id){

Buku buku = bukuRepository.findOne(id);

if(buku == null)

return ResponseEntity.notFound().build();

return ResponseEntity.ok().body(buku);

@PathVariable digunakan untuk mendapatkan data dari id ketika diketikan di url.


Contoh http://localhost:8080/buku/1

Apabila id tidak ada di list, akan direspon error

Sorting buku
@GetMapping("/sortbuku")
Login ke medium.com dengan Google

public List<Buku> sortbuku(@RequestParam(value="title")String


titleBook){ chaerul bachri
chaerul8s@gmail.com
return bukuRepository.findByTitleBook(titleBook);

} LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
@RequestParam digunakan untuk mendapatkan data medium.com.
persyaratan layanan dari ketika diketikan di url.
Contoh http://localhost:8080/buku/sortbuku?title=tehbotol

findByTitleBook merupakan method yang sudah dibuat di repository

Sorting buku by status peminjaman

@GetMapping("/sortstatus/{statusPeminjaman}")

public List<Buku> sortstatus(@PathVariable(value="statusPeminjaman")


int statusPeminjaman){

return bukuRepository.findByStatusPeminjaman(statusPeminjaman);

@PathVariable digunakan untuk mendapatkan data dari id ketika diketikan di url..


Contoh http://localhost:8080/buku/sortstatus/1

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 }

BukuController.java hosted with ❤ by GitHub view raw

Testing aplikasi
GetAll
Login ke medium.com dengan Google

chaerul bachri
chaerul8s@gmail.com

LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.

Menambah buku

Meng-update buku
Login ke medium.com dengan Google

chaerul bachri
Meng-delete buku
chaerul8s@gmail.com

LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.

Mendapatkan data by Id

Sorting buku
Login ke medium.com dengan Google

chaerul bachri
chaerul8s@gmail.com

LANJUTKAN SEBAGAI CHAERUL

Untuk membuat akun, Google akan membagikan nama,


alamat email, dan gambar profil Anda kepada medium.com.
Dengan melanjutkan, Anda menyetujui kebijakan privasi dan
persyaratan layanan medium.com.
Sorting buku by status peminjaman

Spring Boot

About Help Legal

Anda mungkin juga menyukai