Begadang Lagi (Ngopi Hitam Dulu Biar Ga TABLO)

:D
Monday, January 5, 2015

2:50 AM
10
Kali ini saya akan membahas cara membuat Konsep MVC id Java,
Sebelunya Anda Harus Membaca Apa itu MVC dan Class DAO di postingan sebelumnya.
ScreenShoot Contoh Sederhana CRUD dengan konsep MVC



Saya akan Pandu Rekan2 dalam pembuatannya :

Langkah pertama anda buat databasenya :
nama database : db_crud
buatlah tabel databsenya : tblmahasiswa











kemudian buka NetBeans anda buatlah project baru dengan nama "firmanmvc", untuk anda silahkan bisa improv sendiri projectnya.
kemudia setelah terbuat projectnya anda bua kembali Package baru dengan nama "firmanmvc.koneksi " kemudian anda buat Java Class di dalamnya dengan nama" koneksi" lalu isi Code :

package firmanmvc.koneksi;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
 *
 * @author Firman Wisambudi
 */
public class koneksi {
   
    static Connection con;

    public static Connection connection() {
        if (con == null) {
            MysqlDataSource data = new MysqlDataSource();
            data.setDatabaseName("db_crud");
            data.setUser("root");
            data.setPassword("");
            try {
                con = data.getConnection();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
        return con;
    }
}

Kemudian setelah itu anda Buat Package baru dengan nama "firmanmvc.model", lalu anda buat 2 Java Class dengan nama "mahasiswa" dan "tableModelMahasiswa", kemudian isikan Code pada Java Class mahasiswa :

    private Integer id;
    private String nim;
    private String nama;
    private String jk;
    private String alamat;

Blok semua Code di atas lalu klik kanan-InsertCode-Getter and Setter, maka akan membuat Class Otomatis, hasil lengkapnya :

package firmanmvc.model;


/**
 *
 * @author Firman Wisambudi
 */
public class mahasiswa {
   
    private Integer id;
    private String nim;
    private String nama;
    private String jk;
    private String alamat;

    public Integer getId() {
        return id;
    }

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

    public String getNim() {
        return nim;
    }

    public void setNim(String nim) {
        this.nim = nim;
    }

    public String getNama() {
        return nama;
    }

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

    public String getJk() {
        return jk;
    }

    public void setJk(String jk) {
        this.jk = jk;
    }

    public String getAlamat() {
        return alamat;
    }

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

   

}

Kemudian isikan Code pada Java Class "tableModelMahasiswa", fungsi class ini untuk mengatur tabel di VIEW program anda :

package firmanmvc.model;

import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
 *
 * @author Firman Wisambudi
 */
public class tableModelMahasiswa  extends AbstractTableModel{
   
    List<mahasiswa> lb;

    public tableModelMahasiswa(List<mahasiswa> lb) {
        this.lb = lb;
    }

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


    public int getRowCount() {
        return lb.size();
    }

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

    @Override
    public Object getValueAt(int row, int column) {
        switch (column) {
            case 0:
                return lb.get(row).getId();
            case 1:
                return lb.get(row).getNim();
            case 2:
                return lb.get(row).getNama();
            case 3:
                return lb.get(row).getJk();
            case 4:
                return lb.get(row).getAlamat();
            default:
                return null;
        }
    }
}


Kemudian sekarang anda membuat Package baru dengan nama "firmanmvc.DAO", lalu anda buat Java Class implement dengan nama "daoMahasiswa" dan isikan Code :

package firmanmvc.DAO;

import firmanmvc.koneksi.koneksi;
import firmanmvc.model.mahasiswa;
import firmanmvc.DAOImplement.implementMahasiswa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
 *
 * @author Firman Wisambudi
 */
public class daoMahasiswa implements implementMahasiswa{
   
    Connection connection;
    final String insert = "INSERT INTO tblmahasiswa (nim, nama,jk, alamat) VALUES (?, ?, ?,?);";
    final String update = "UPDATE tblmahasiswa set nim=?, nama=?, jk=?, alamat=? where id=? ;";
    final String delete = "DELETE FROM tblmahasiswa where id=? ;";
    final String select = "SELECT * FROM tblmahasiswa;";
    final String carinama = "SELECT * FROM tblmahasiswa where nama like ?";
   
    public daoMahasiswa() {
        connection = koneksi.connection();
    }

    public void insert(mahasiswa b) {
        PreparedStatement statement = null;
        try {
            statement = connection.prepareStatement(insert);
            statement.setString(1, b.getNim());
            statement.setString(2, b.getNama());
            statement.setString(3, b.getJk());
            statement.setString(4, b.getAlamat());
            statement.executeUpdate();
            ResultSet rs = statement.getGeneratedKeys();
            while (rs.next()) {
                b.setId(rs.getInt(1));
            }
           
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                statement.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void update(mahasiswa b) {
        PreparedStatement statement = null;
        try {
            statement = connection.prepareStatement(update);
            statement.setString(1, b.getNim());
            statement.setString(2, b.getNama());
            statement.setString(3, b.getJk());
            statement.setString(4, b.getAlamat());
            statement.setInt(5, b.getId());
            statement.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                statement.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void delete(int id) {
        PreparedStatement statement = null;
        try {
            statement = connection.prepareStatement(delete);

            statement.setInt(1, id);
            statement.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                statement.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    public List<mahasiswa> getALL() {
        List<mahasiswa> lb = null;
        try {
            lb = new ArrayList<mahasiswa>();
            Statement st = connection.createStatement();
            ResultSet rs = st.executeQuery(select);
            while (rs.next()) {
                mahasiswa b = new mahasiswa();
                b.setId(rs.getInt("id"));
                b.setNim(rs.getString("nim"));
                b.setNama(rs.getString("nama"));
                b.setJk(rs.getString("jk"));
                b.setAlamat(rs.getString("alamat"));
                lb.add(b);
            }
        } catch (SQLException ex) {
            Logger.getLogger(daoMahasiswa.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lb;
    }

    public List<mahasiswa> getCariNama(String nama) {
        List<mahasiswa> lb = null;
        try {
            lb = new ArrayList<mahasiswa>();
            PreparedStatement st = connection.prepareStatement(carinama);
            st.setString(1, "%" + nama + "%");
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                mahasiswa b = new mahasiswa();
                b.setId(rs.getInt("id"));
                b.setNim(rs.getString("nim"));
                b.setNama(rs.getString("nama"));
                b.setJk(rs.getString("jk"));
                b.setAlamat(rs.getString("alamat"));
                lb.add(b);
            }
        } catch (SQLException ex) {
            Logger.getLogger(daoMahasiswa.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lb;
    }
}

 
 Kemudian anda Buat Package baru dengan nama "firmanmvc.DAOImplement" lalu buat Java Class Iterface dengan nama "implementMahasiswa" lalu isikan Code :

package firmanmvc.DAOImplement;

import java.util.List;
import firmanmvc.model.*;
/**
 *
 * @author Firman Wisambudi
 */
public interface implementMahasiswa {
   
    public void insert(mahasiswa b);

    public void update(mahasiswa b);

    public void delete(int id);

    public List<mahasiswa> getALL();

    public List<mahasiswa> getCariNama(String nama);
}


Kemudian anda membuat Package baru dengan nama "firmanmvc.controller", lalu buat Java Class dengan nama "controllerMahasiswa" dan isikan Code :

package firmanmvc.controller;

import firmanmvc.DAO.daoMahasiswa;
import firmanmvc.DAOImplement.implementMahasiswa;
import firmanmvc.model.mahasiswa;
import firmanmvc.model.tableModelMahasiswa;
import firmanmvc.view.FormMahasiswa;
import java.util.List;
import javax.swing.JOptionPane;
/**
 *
 * @author Firman Wisambudi
 */
public class controllerMahasiswa {
   
    FormMahasiswa frame;
    implementMahasiswa implMahasiswa;
    List<mahasiswa> lb;

    public controllerMahasiswa(FormMahasiswa frame) {
        this.frame = frame;
        implMahasiswa = new daoMahasiswa();
        lb = implMahasiswa.getALL();
    }

    //mengosongkan field
    public void reset() {
        frame.getTxtID().setText("");
        frame.getTxtNim().setText("");
        frame.getTxtNama().setText("");
        frame.getTxtJk().setSelectedItem("");
        frame.getTxtAlamat().setText("");
       
    }

    //menampilkan data ke dalam tabel
    public void isiTable() {
        lb = implMahasiswa.getALL();
        tableModelMahasiswa tmb = new tableModelMahasiswa(lb);
        frame.getTabelData().setModel(tmb);
    }

    //merupakan fungsi untuk menampilkan data yang dipilih dari tabel
    public void isiField(int row) {
        frame.getTxtID().setText(lb.get(row).getId().toString());
        frame.getTxtNim().setText(lb.get(row).getNim());
        frame.getTxtNama().setText(lb.get(row).getNama());
        frame.getTxtJk().setSelectedItem(lb.get(row).getJk());
        frame.getTxtAlamat().setText(lb.get(row).getAlamat());
    }

    //merupakan fungsi untuk insert data berdasarkan inputan user dari textfield di frame
    public void insert() {
       
      if (!frame.getTxtNim().getText().trim().isEmpty()& !frame.getTxtNama().getText().trim().isEmpty()) {
         
        mahasiswa b = new mahasiswa();
        b.setNim(frame.getTxtNim().getText());
        b.setNama(frame.getTxtNama().getText());
        b.setJk(frame.getTxtJk().getSelectedItem().toString());
        b.setAlamat(frame.getTxtAlamat().getText());

        implMahasiswa.insert(b);
        JOptionPane.showMessageDialog(null, "Simpan Data sukses");
       
        } else {
            JOptionPane.showMessageDialog(frame, "Data Tidak Boleh Kosong");
        }
    }

    //berfungsi untuk update data berdasarkan inputan user dari textfield di frame
    public void update() {
   if (!frame.getTxtID().getText().trim().isEmpty()) {
            
        mahasiswa b = new mahasiswa();
        b.setNim(frame.getTxtNim().getText());
        b.setNama(frame.getTxtNama().getText());
        b.setJk(frame.getTxtJk().getSelectedItem().toString());
        b.setAlamat(frame.getTxtAlamat().getText());
        b.setId(Integer.parseInt(frame.getTxtID().getText()));
        implMahasiswa.update(b);
       
        JOptionPane.showMessageDialog(null, "Update Data  sukses");
        } else {
            JOptionPane.showMessageDialog(frame, "Pilih data yang akan di ubah");
        }
    }

    //berfungsi menghapus data yang dipilih
    public void delete() {
        if (!frame.getTxtID().getText().trim().isEmpty()) {
            int id = Integer.parseInt(frame.getTxtID().getText());
            implMahasiswa.delete(id);
           
            JOptionPane.showMessageDialog(null, "Hapus Data  sukses");
        } else {
            JOptionPane.showMessageDialog(frame, "Pilih data yang akan di hapus");
        }
    }

    public void isiTableCariNama() {
        lb = implMahasiswa.getCariNama(frame.getTxtCariNama().getText());
        tableModelMahasiswa tmb = new tableModelMahasiswa(lb);
        frame.getTabelData().setModel(tmb);
    }

    public void carinama() {
        if (!frame.getTxtCariNama().getText().trim().isEmpty()) {
            implMahasiswa.getCariNama(frame.getTxtCariNama().getText());
            isiTableCariNama();
        } else {
            JOptionPane.showMessageDialog(frame, "SILAHKAN PILIH DATA");
        }
    }
}

kalau anda tanda Merah,, Ma'lum karena anda belum membuat VIEW nya :)
Sekarang anda buat VIEW, Buat Package baru dengan nama "firmanmvc.view " Lalu Buat Form baru dengan nama "Form Mahasiswa", seperti screenshot :


Kemudian Rename JTextField,Button,JTable dan JComboBoxnya :


Kemudian Masuk Ke Source
masukan Code Import Packagenya :

import firmanmvc.controller.controllerMahasiswa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.text.*;

Masukan Code di bawah Class extend :

controllerMahasiswa cbt;

Masukan Code Di bawah initComponents(),sebelum kurung tutup Kurawalnya :

cbt = new controllerMahasiswa(this);
 cbt.isiTable();

Kode untuk Simpan, Double Click Button Simpan, masukan Code :

// TODO add your handling code here:
        cbt.insert();
        cbt.isiTable();
        cbt.reset();

Kode untuk Simpan, Double Click Button Ubah, masukan Code :

        cbt.update();
        cbt.isiTable();
        cbt.reset();

Kode untuk Simpan, Double Click Button Hapus, masukan Code :

       cbt.delete();
        cbt.isiTable();
        cbt.reset();
 
Kode untuk Simpan, Double Click Button Batal, masukan Code :

cbt.reset();

  Kode untuk Simpan, Double Click Button Cari, masukan Code :

cbt.carinama();

Selesai,,
Belum Kalesss,,, Jangan Lupa Anda masukan Code ini di Design Form Mahasiswa lalu pilih Source,, simpan di paling Bawah sebelum kurung tutup kurawal paling akhir :

 public JTextField getTxtID(){
        return txtID;
    }
    public JTextField getTxtNim(){
        return txtNim;
    }
    public JTextField getTxtNama(){
        return txtNama;
    }
     public JComboBox getTxtJk(){
        return setJk;
    }
    public JTextArea getTxtAlamat(){
        return txtAlamat;
    }
    public JTable getTabelData(){
        return tabelData;
    }
    public JButton getButtonInsert(){
        return buttonInsert;
    }
    public JButton getButtonUpdate(){
        return buttonUpdate;
    }
    public JButton getButtonDetele(){
        return buttonDelete;
    }
    public JButton getButtonReset(){
        return buttonReset;
    }
    public JButton getButtonCari(){
        return buttonCariNama;
    }
    public JTextField getTxtCariNama(){
        return txtCariNama;
    }

Setelah itu lalu lihat Project anda disana ada Package Libraries anda, Kemudian anda Klik Kanan Pada Libraries tersebut, pilih add Libray dan masukan MySQL JDBC Drives, fungsinya sebagai jembatan penghubung antara aplikasi anda dengan Database mysql anda .

Selsaii dechhh :)

Screenshoot Packagenya :




















Coba Jalankan Form Mahasiswa yang telah di buat, hasilnya :



Untuk Project yang sudah jadinya bisa di dwonload.

Korban Ngoding !
DOWNLOAD

10 comments:

  1. mantap gan ! terus buat artikel kaya gini !

    ReplyDelete
  2. error bro, saya download source nya trus import database dengan nama sesuai di artikel

    ReplyDelete
  3. file jadi tidak bisa di download gan

    ReplyDelete
  4. bang, kek nya ada yang kelewatan bang, yang firmanMVC, yang void main isinya apaan bang ?

    ReplyDelete
  5. Mohon maaf semuanya, saya baru nge Blog kembali
    Silahkan download kembali linknya sudah saya perbaiki :)

    ReplyDelete