Membuat Rest Api dengan Spring Boot dan PostgreSQL


Dalam tutorial ini, kita akan membangun Rest API dengan menggunakan Spring Boot, Spring Data JPA/Hibernate untuk berinteraksi dengan PostgreSQL

Api yang akan kita bangun kali ini adalah CRUD untuk Customer, yaitu berfungsi untuk create, read, update dan delete. Berikut ini katalog API nya

MethodURLDeskripsi
POST/api/customersMenambah customer baru
GET/api/customersMengambil semua data customer
GET/api/customers/:idMengambil data customer berdasarkan :id
GET/api/customers?name=[keyword]Mengambil data customer berdasarkan nama
PUT/api/customers/:idMengubah data customer berdasarkan :id
DELETE/api/customers/:idMenghapus data customer berdasarkan :id
Katalog API

Oke, langsung saja kita masuk ke langkah pertama. Seperti biasanya kita mulai dengan menggenerate project dengan Spring Initializr, atur seperti gambar di bawah ini

Spring Initializr

Klik generate kemudian buka dengan editor favorit anda. Dalam tutorial ini yang dipakai adalah NetBeans IDE.

Buka file pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bittama</groupId>
    <artifactId>customer</artifactId>
    <version>0.0.1</version>
    <name>customer</name>
    <description>Customer Service</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Kita pastikan semua dependensi yang dibutuhkan sudah masuk dalam file pom.xml.

Mengatur Koneksi Database

Langkah kedua buat database dengan nama customer. Untuk mengatur koneksi ke database terdapat pada file application.properties yang terdapat dalam src/main/resources

spring.datasource.url=jdbc:postgresql://localhost:5432/customer
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.jpa.hibernate.ddl-auto=update

Properti spring.datasource.username dan spring.datasource.password disesuaikan username dan password PostgrSQL yang akan dihubungkan

spring.jpa.hibernate.ddl-auto terdapat 4 pilihan yaitu create, create-drop, validate dan update

Membuat Entity Class Customer.java

Dalam tutorial ini kita menggunakan Lombok. Lombok adalah sebuah library yang berguna untuk mengurangi penulisan kode.

Bagaimana cara menggunakannya? Untuk menggunakan lombok, kita hanya perlu menggunakan anotasi @Getter dan @Setter pada Class Customer. Jadi dengan menambah anotasi tersebut kita tidak perlu lagi membuat method getter dan setter nya. Untuk lebih jelasnya bisa dilihat pada kode di bawah ini.

package com.bittama.customer.entities;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
public class Customer implements Serializable {

    @Id
    private String id;
    private String name;
    private String address;
    private String email;
    private String phone;
}

@Getter dan @Setter anotasi lombok yang digunakan untuk menggenerate method getter dan setter

@Entity anotasi yang digunakan untuk mengidentifikasi Entity Class

@Id anotasi yang digunakan untuk menandai primary key

Membuat Repository Interface

Buat class dalam package com.bittama.repositories dengan nama CustomerRepository yang meng extends pada JpaRepository.

package com.bittama.customer.repositories;

import com.bittama.customer.entities.Customer;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CustomerRepository extends JpaRepository<Customer, String> {

    public List<Customer> findByNameContaining(String name);
    
}

Sekarang kita dapat menggunakan method yang ada dalam CustomerRepository seperti save(), findOne(), findById(), findAll(), dan lainnya tanpa harus mengimplementasikannya.

Kita juga menambahkan custom method findByNameContaining() yang digunakan untuk pencarian berdasarkan nama.

Membuat Rest API Controller

Rest API Controller digunakan untuk method create(), read(), update() dan delete() agar dapat diakses menggunakan protokol http. Buat sebuah class dengan nama CustomerController dalam package com.bittama.controllers seperti di bawah ini

package com.bittama.customer.controllers;

import com.bittama.customer.entities.Customer;
import com.bittama.customer.repositories.CustomerRepository;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class CustomerController {

    @Autowired
    private CustomerRepository customerRepository;

    @GetMapping("/customers")
    public ResponseEntity<List<Customer>> findAll(
            @RequestParam(name = "name", 
                    required = false, 
                    defaultValue = "") String name) {
        try {
            List<Customer> customers;
            if (StringUtils.hasText(name)) {
                customers = customerRepository.findByNameContaining(name);
            } else {
                customers = customerRepository.findAll();
            }

            if (customers.isEmpty()) {
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
            }
            return new ResponseEntity<>(customers, HttpStatus.OK);
        } catch (Exception e) {
            return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
        }

    }

    @GetMapping("/customers/{id}")
    public ResponseEntity<Customer> findById(
            @PathVariable("id") String id) {
        
        Optional<Customer> customerData = customerRepository.findById(id);

        if (customerData.isPresent()) {
            return new ResponseEntity<>(customerData.get(), HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    @PostMapping("/customers")
    public ResponseEntity<Customer> create(
            @RequestBody Customer customer) {
        try {
            Customer newCustomer = new Customer();
            newCustomer.setId(UUID.randomUUID().toString());
            newCustomer.setName(customer.getName());
            newCustomer.setAddress(customer.getAddress());
            newCustomer.setEmail(customer.getEmail());
            newCustomer.setPhone(customer.getPhone());
            return new ResponseEntity<>(customerRepository.save(newCustomer), HttpStatus.CREATED);
        } catch (Exception e) {
            return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

    @PutMapping("/customers/{id}")
    public ResponseEntity<Customer> update(
            @PathVariable("id") String id,
            @RequestBody Customer customer) {

        Optional<Customer> customerData = customerRepository.findById(id);

        if (customerData.isPresent()) {
            Customer updatedCustomer = customerData.get();
            updatedCustomer.setName(customer.getName());
            updatedCustomer.setAddress(customer.getAddress());
            updatedCustomer.setEmail(customer.getEmail());
            updatedCustomer.setPhone(customer.getPhone());
            return new ResponseEntity<>(customerRepository.save(updatedCustomer), HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    @DeleteMapping("/customers/{id}")
    public ResponseEntity<HttpStatus> delete(
            @PathVariable("id") String id) {
        try {
            customerRepository.deleteById(id);
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } catch (Exception e) {
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

    @DeleteMapping("/customers")
    public ResponseEntity<HttpStatus> deleteAll() {
        try {
            customerRepository.deleteAll();
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } catch (Exception e) {
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

@RestController merupakan anotasi yang digunakan menandai bahwa class tersebuat adalah controller untuk Rest API

@RequestMapping("/api") digunakan untuk menandai bahwa url API diawali dengan /api

@Autowired digunakan untuk meng-inject CustomerRepository

Mari Kita Coba

Untuk mencobanya jalankan perintah mvn spring-boot:run pada command line atau jika anda menggunakan editor NetBeans tekan tombol F6.

Table customer akan secara otomatis digenerate sesuai dengan Customer Entity Class

Kita test api dengan menggunakan postman

Test POST /api/customers
Test GET /api/customers/:id
Test GET /api/customers

Untuk mengetest api yang lain silakan di coba sendiri.

Source code dapat diunduh di https://github.com/andiksystem/spring-customer. Semoga bermanfaat.

Build Docker Image dari Aplikasi Spring Boot


Dalam kesempatan kali ini kita akan membahas tentang cara membuat docker image dari aplikasi Spring Boot. Kita anggap kita sudah memiliki aplikasi yang sudah siap untuk kita buat docker image nya, atau dapat menggunakan source code ini https://github.com/andiksystem/spring-docker

Langkah pertama adalah checkout source code di atas

git clone https://github.com/andiksystem/spring-docker.git

Kemudian buka command line, jalankan perintah mvn package untuk mem build project

Langkah kedua kita buat file Dockerfile dalam project Spring Boot

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} accounting-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/accounting-0.0.1-SNAPSHOT.jar"]

Selanjutnya jalankan perintah di bawah ini

docker build -t <nama_image:tag> .

Nama image adalah nama image yang dibuat, sedangkan tag dapat diisi versi dari image yang dibuat. Jika tag tidak diisi maka default nya adalah latest. Perlu diperhatikan perintah di atas diakhiri dengan titik “.”. Itu menandakan yang di build adalah yang terdapat dalam folder.

Dalam contoh ini dapat dijalankan dengan perintah sebagai berikut

docker build -t bittama/accounting:latest .

Sampai tahap ini kita telah membuat sebuah image dengan nama bittama/accounting:latest. Kita dapat menjalankan image ini dengan perintah

docker run -p 8080:8080 bittama/accounting:latest

Jalankan http://localhost:8080 pada browser maka akan tampil seperti gambar di bawah ini

Demikian pembahasan tentang membuat docker image aplikasi Spring Boot, source code dapat diunduh di https://github.com/andiksystem/spring-docker. Semoga dapat bermanfaat.

Memulai Spring Boot


Kali ini kita membahas tentang memulai Spring boot. Dalam kesempatan kali ini kita akan memulai dengan konfigurasi project menggunakan https://start.spring.io/, berikut adalah tampilannya

Dalam spring initializr terdapat beberapa inputan yang harus diisi

  • Project: build tool yang akan digunakan untuk mengembangkan project, bisa dipilih jenis project menggunakan maven atau gradle
  • Language: bahasa pemrograman yang akan digunakan, bisa dipilih bahasa pemrograman Java, Kotlin atau Groovy
  • Spring Boot: versi spring boot yang akan digunakan
  • Project Metadata: merupakan fasilitas untuk penamaan paket project yang akan dikembangkan
    • Group: digunakan untuk identifikasi unik yang universal untuk sebuah proyek. Meskipun ini sering kali hanya nama proyek misalnya accounting, akan sangat membantu jika menggunakan nama paket yang sepenuhnya memenuhi syarat untuk membedakannya dari proyek lain dengan nama serupa misalnya com.bittama.accounting.
    • Artifact: adalah nama paket jar atau war tanpa versi. Nama dapat dipilih apa pun yang dinginkan dengan huruf kecil dan tidak ada simbol yang aneh. Dari contoh gambar di atas maka nama yang dihasilkan adalah accounting-<versi>.jar
    • Package Name: adalah struktur nama paket dalam project
  • Packaging: output dari project yang dikembangkan bisa berupa jar atau war
  • Java: versi java yang digunakan

Memulai Project

Dalam kesempatan kali ini kita akan membuat sebuah project sederhana menggunakan spring boot yang akan menampilkan tulisan Hello World pada halaman browser. Dari Spring Initilizr yang telah kita bahas di atas, masukkan Spring Web pada dependencies seperti gambar di bawah ini

Menambahkan Spring Web pada dependencies

Silakan pilih dependencies lain sesuai dengan kebutuhan project anda. Selanjutnya klik generate untuk mengenerate kode untuk memulai project. Hasil dari generate tadi adalah file zip, jika sudah selesai terdownload silakan diekstrak

Kita dapat memulai menulis kode dengan menggunakan editor apa saja. Kali ini kita menggunakan NetBeans IDE. Sebenarnya dalam NetBeans IDE sudah terdapat plugins untuk memulai Spring Boot, silakan dicoba sendiri.

Oke, langsung saja kita buka NetBeans IDE kemudian open project, pilih dari file yang telah diekstrak tadi. Berikut adalah tampilan dari hasil generate jika di buka dengan NetBeans IDE.

Open Project

Buat file Java Class dengan nama HelloController.java dan tulis kode seperti di bawah ini

package com.bittama.accounting;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/")
    public String index() {
        return "Hello World...";
    }
}

Jalankan dengan mengklik menu Run pilih Run Project atau tekan tombol F6 pada keyboard. Buka browser lalu masukkan url http://localhost:8080 maka akan tampil seperti gambar di bawah ini.

Tampilan dalam Browser

Demikian tadi sekilas tentang memulai Spring Boot dengan menggunakan Spring Initializr, source code dapat diunduh di https://github.com/andiksystem/spring-helloworld. Semoga dapat bermanfaat.

Halaman Checkout (Melanjutkan Tulisan Membuat Shopping Cart)


Tulisan ini merupakan kelengkapan dari tulisan PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session. untuk lebih detailnya silakan download langsung source codenya dan silakan di coba. Download source code

Screen shoot

Screenshot from 2014-10-27 11:36:02

Screenshot from 2014-10-27 11:57:55

Setelah tombol kirim diklik, maka data cart dan pelanggan akan dimasukkan dalam database

Jawaban dari Beberapa Komentar pada Artikel Aplikasi Chat


Sebelumnya mohon maaf baru sempat merespon pertanyaan-pertanyaan pada arikel sebelumnya Java Socket; Membuat Aplikasi Chat Sederhana dengan Java

Kebanyakan dari pertanyaan yang ada adalah menanyakan tentang bagaimana untuk mengirim private message?

Lanjutkan membaca Jawaban dari Beberapa Komentar pada Artikel Aplikasi Chat

Menanggapi Sebuah Pertanyaan Tentang Shopping Cart


Tulisan ini merupakan jawaban dari sebuah pertanyaan untuk tulisan sebelumnya PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session. Pertanyaannya adalah bagaimana jika menggunakan checkbox? Untuk mengubahnya dengan menggunakan checkbox, seperti gambar di bawah ini misalnya,

Lanjutkan membaca Menanggapi Sebuah Pertanyaan Tentang Shopping Cart

PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session


Tampilan Contoh Aplikasi Shopping Cart

Dalam aplikasi e-commerce tentunya terdapat shopping cart. Shopping cart digunakan untuk menampung sementara dari produk-produk yang akan dibeli oleh pengunjung situs e-commerce. Dalam tulisan ini akan menjelaskan secara singkat tentang shopping cart yaitu dengan menggunakan fasilitas session yang ada dalam PHP dan menggunakan MySQL untuk menyimpan data secara permanen.

Lanjutkan membaca PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session

Java Socket; Membuat Aplikasi Chat Sederhana dengan Java


Dalam tulisan ini akan membahas tentang aplikasi chat sederhana menggunakan bahasa pemrograman java. Aplikasi ini akan mengimplementasikan Class ServerSocket dan Class Socket, dikembangkan dengan NetBeans 7.2

Lanjutkan membaca Java Socket; Membuat Aplikasi Chat Sederhana dengan Java

JPA; Membuat Class TableModel dari Entity Class


Misalkan entity class nya (Anggota.java) seperti di bawah ini


package com.andik.tutorial.entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Andik Hermawan
 */
@Entity
@Table(name = "anggota")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Anggota.findAll", query = "SELECT a FROM Anggota a"),
    @NamedQuery(name = "Anggota.findById", query = "SELECT a FROM Anggota a WHERE a.id = :id"),
    @NamedQuery(name = "Anggota.findByNama", query = "SELECT a FROM Anggota a WHERE a.nama = :nama"),
    @NamedQuery(name = "Anggota.findByAlamat", query = "SELECT a FROM Anggota a WHERE a.alamat = :alamat"),
    @NamedQuery(name = "Anggota.findByKota", query = "SELECT a FROM Anggota a WHERE a.kota = :kota"),
    @NamedQuery(name = "Anggota.findByEmail", query = "SELECT a FROM Anggota a WHERE a.email = :email"),
    @NamedQuery(name = "Anggota.findByTelepon", query = "SELECT a FROM Anggota a WHERE a.telepon = :telepon")})
public class Anggota implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id")
    private String id;
    @Column(name = "nama")
    private String nama;
    @Column(name = "alamat")
    private String alamat;
    @Column(name = "kota")
    private String kota;
    @Column(name = "email")
    private String email;
    @Column(name = "telepon")
    private String telepon;

    public Anggota() {
    }

    public Anggota(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getAlamat() {
        return alamat;
    }

    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }

    public String getKota() {
        return kota;
    }

    public void setKota(String kota) {
        this.kota = kota;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelepon() {
        return telepon;
    }

    public void setTelepon(String telepon) {
        this.telepon = telepon;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Anggota)) {
            return false;
        }
        Anggota other = (Anggota) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.andik.tutorial.entity.Anggota[ id=" + id + " ]";
    }

}

dari entity class (Anggota.java) di atas dapat kita tampilkan pada JTable menggunakan TableModel. TableModel ini memuat data dari class java.util.List. Sebagai contoh dalam tulisan ini Class TableModel nya kita kasih nama AnggotaTableMode.java.

package com.andik.tutorial.model;

import com.andik.tutorial.entity.Anggota;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Andik Hermawan
 */
public class AnggotaTableModel extends AbstractTableModel {

    private List<Anggota> list;

    public AnggotaTableModel() {
        list = new ArrayList<Anggota>();
    }

    public void setData(List list) {
        this.list = list;
        fireTableDataChanged();
    }

    public void add(Anggota anggota) {
        list.add(anggota);
        fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
    }

    public void edit(int index, Anggota anggota) {
        list.set(index, anggota);
        fireTableRowsUpdated(index, index);
    }

    public void delete(int index) {
        list.remove(index);
        fireTableRowsDeleted(index, index);
    }

    public void deleteAll() {
        list.clear();
        fireTableDataChanged();
    }

    public Anggota get(int row) {
        return list.get(row);
    }

    @Override
    public int getRowCount() {
        return list.size();
    }

    @Override
    public int getColumnCount() {
        return 6;
    }

    public List<Anggota> getList() {
        return list;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return list.get(rowIndex).getId();
            case 1:
                return list.get(rowIndex).getNama();
            case 2:
                return list.get(rowIndex).getAlamat();
            case 3:
                return list.get(rowIndex).getKota();
            case 4:
                return list.get(rowIndex).getEmail();
            case 5:
                return list.get(rowIndex).getTelepon();
            default:
                return null;
        }
    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "ID";
            case 1:
                return "Nama";
            case 2:
                return "Alamat";
            case 3:
                return "Kota";
            case 4:
                return "Email";
            case 5:
                return "Telepon";
            default:
                return null;
        }
    }

    @Override
    public Class getColumnClass(int column) {
        switch (column) {
            case 0:
                return String.class;
            case 1:
                return String.class;
            case 2:
                return String.class;
            case 3:
                return String.class;
            case 4:
                return String.class;
            case 5:
                return String.class;
            default:
                return Object.class;
        }
    }
}

Untuk memanggilnya dengan code di bawah ini

...
        AnggotaTableModel model = new AnggotaTableModel();
        anggotaTableView.setModel(model);
...

Untuk lebih jelasnya disambung di artikel selanjutnya, selamat mencoba dan semoga bermanfaat… 😀

PHP MySQL; Cara Cepat Membuat Halaman CRUD Menggunakan Adobe Dreamweaver CS 5


Pengembangan aplikasi database tentunya tidak terlepas dari CRUD (Create, Read, Update dan Delete) baik berbasis desktop maupun web. Sebenarnya banyak cara untuk membuat halaman CRUD dengan PHP dan MySQL, bisa dengan code manual maupun menggunakan generator kode. Menulis kode manual memang akan bisa lebih ampuh dan juga lebih mudah untuk mengembangkan serta penggunaan ulang, akan tetapi ketika project menumpuk kadang kita kelamaan dalam menulis kodenya dan hasilnya project selesai dengan waktu yang lebih lama. Selain itu, dengan coding manual kita disibukkan untuk meneliti baris demi baris kode yang mengakibatkan fokus kita terposrsir pada itu dan validasi sistem akan terlupakan.

Lanjutkan membaca PHP MySQL; Cara Cepat Membuat Halaman CRUD Menggunakan Adobe Dreamweaver CS 5