Membuat CRUD CSV Menggunakan Python

 


Berikut adalah membuat CRUD [Create , Read , Updae , Delete ] File CSV menggunakan Phyton 

Buat File phyton 

import csv
import os

csv_filename = 'contacts.csv'

def clear_screen():
    os.system('cls' if os.name == 'nt' else 'clear')

def show_menu():
    clear_screen()
    print("=== APLIKASI KONTAK ===")
    print("[1] Lihat Daftar Kontak")
    print("[2] Buat Kontak Baru")
    print("[3] Edit Kontak")
    print("[4] Hapus Kontak")
    print("[5] Cari Kontak")
    print("[0] Exit")
    print("------------------------")
    selected_menu = input("Pilih menu> ")
    
    if(selected_menu == "1"):
        show_contact()
    elif(selected_menu == "2"):
        create_contact()
    elif(selected_menu == "3"):
        edit_contact()
    elif(selected_menu == "4"):
        delete_contact()
    elif(selected_menu == "5"):
        search_contact()
    elif(selected_menu == "0"):
        exit()
    else:
        print("Kamu memilih menu yang salah!")
        back_to_menu()

def back_to_menu():
    print("\n")
    input("Tekan Enter untuk kembali...")
    show_menu()


def show_contact():
    clear_screen()
    contacts = []
    with open(csv_filename) as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=",")
        for row in csv_reader:
            contacts.append(row)

    if (len(contacts) > 0):
        labels = contacts.pop(0)
        print(f"{labels[0]} \t {labels[1]} \t\t {labels[2]}")
        print("-"*34)
        for data in contacts:
            print(f'{data[0]} \t {data[1]} \t {data[2]}')
    else:
        print("Tidak ada data!")
    back_to_menu()


def create_contact():
    clear_screen()
    with open(csv_filename, mode='a') as csv_file:
        fieldnames = ['NO', 'NAMA', 'TELEPON']
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        
        no = input("No urut: ")
        nama = input("Nama lengkap: ")
        telepon = input("No. Telepon: ")

        writer.writerow({'NO': no, 'NAMA': nama, 'TELEPON': telepon})
        print("Berhasil disimpan!")

    back_to_menu()


def search_contact():
    clear_screen()
    contacts = []

    with open(csv_filename, mode="r") as csv_file:
        csv_reader = csv.DictReader(csv_file)
        for row in csv_reader:
            contacts.append(row)

    no = input("Cari berdasrakan nomer urut> ")

    data_found = []

    # mencari contact
    indeks = 0
    for data in contacts:
        if (data['NO'] == no):
            data_found = contacts[indeks]
            
        indeks = indeks + 1

    if len(data_found) > 0:
        print("DATA DITEMUKAN: ")
        print(f"Nama: {data_found['NAMA']}")
        print(f"Telepon: {data_found['TELEPON']}")
    else:
        print("Tidak ada data ditemukan")
    back_to_menu()
    


def edit_contact():
    clear_screen()
    contacts = []

    with open(csv_filename, mode="r") as csv_file:
        csv_reader = csv.DictReader(csv_file)
        for row in csv_reader:
            contacts.append(row)

    print("NO \t NAMA \t\t TELEPON")
    print("-" * 32)

    for data in contacts:
        print(f"{data['NO']} \t {data['NAMA']} \t {data['TELEPON']}")

    print("-----------------------")
    no = input("Pilih nomer kontak> ")
    nama = input("nama baru: ")
    telepon = input("nomer telepon baru: ")

    # mencari contact dan mengubah datanya
    # dengan data yang baru
    indeks = 0
    for data in contacts:
        if (data['NO'] == no):
            contacts[indeks]['NAMA'] = nama
            contacts[indeks]['TELEPON'] = telepon
        indeks = indeks + 1

    # Menulis data baru ke file CSV (tulis ulang)
    with open(csv_filename, mode="w") as csv_file:
        fieldnames = ['NO', 'NAMA', 'TELEPON']
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writeheader()
        for new_data in contacts:
            writer.writerow({'NO': new_data['NO'], 'NAMA': new_data['NAMA'], 'TELEPON': new_data['TELEPON']}) 

    back_to_menu()



def delete_contact():
    clear_screen()
    contacts = []

    with open(csv_filename, mode="r") as csv_file:
        csv_reader = csv.DictReader(csv_file)
        for row in csv_reader:
            contacts.append(row)

    print("NO \t NAMA \t\t TELEPON")
    print("-" * 32)

    for data in contacts:
        print(f"{data['NO']} \t {data['NAMA']} \t {data['TELEPON']}")

    print("-----------------------")
    no = input("Hapus nomer> ")

    # mencari contact dan mengubah datanya
    # dengan data yang baru
    indeks = 0
    for data in contacts:
        if (data['NO'] == no):
            contacts.remove(contacts[indeks])
        indeks = indeks + 1

    # Menulis data baru ke file CSV (tulis ulang)
    with open(csv_filename, mode="w") as csv_file:
        fieldnames = ['NO', 'NAMA', 'TELEPON']
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writeheader()
        for new_data in contacts:
            writer.writerow({'NO': new_data['NO'], 'NAMA': new_data['NAMA'], 'TELEPON': new_data['TELEPON']}) 

    print("Data sudah terhapus")
    back_to_menu()

if __name__ == "__main__":
    while True:
        show_menu()


Output :

1. Menu Utama



2. pilih 1 untuk List Daftar  Kontak



3.  pilih 2 untuk menambah kontak baru


4. pilih 3 untuk Edit kontak

5. pilih 4 untuk menghapus

6. pilih 5 untuk mencari kontak

7. pilih 0 untuk keluar dari program

Read Write File CSV Menggunakan Python

 


Berikut adalah cara read write file CSV menggunakan Phyton :

1. Buat file csv : data.csv

NO,NAMA,ALAMAT

NO,NAMA,TELEPON

1,Bambang,081234

2,Richard,08712333

3,Bapak Budi,08733311

4,Jokowi Dodo,0851231


catatan : gunakan tanda petik untuk kata yang mengandung koma, seperti gelar

contoh : 

1,"Bambang, S.Kom",Bandung


2. Buat file phyton : bacacsv.py

import csv

with open('data.csv') as csv_file:

    csv_reader = csv.reader(csv_file, delimiter=",")

    print(csv_reader)

    for row in csv_reader:

        print(row)

Output :


Catatan : Untuk format bisa disesuaikan dengan csv file

# membaca CSV dengan dlimiter tab

csv.reader(csv_file, delimiter="\t")

# membaca CSV dengan dlimiter titik dua :

csv.reader(csv_file, delimiter=":")

# membaca CSV dengan dlimiter titik koma ;

csv.reader(csv_file, delimiter=";")


3. Parsing File CSV di Python : parse_dic.py

3.1. Parsing CSV menjadi List

contoh 1 :

import csv

contacts = []

with open('data.csv') as csv_file:

    csv_reader = csv.reader(csv_file, delimiter=",")

    for row in csv_reader:

        contacts.append(row)

print(contacts)

Output :

[['NO', 'NAMA', 'TELEPON'], ['1', 'Bambang', '081234'], ['2', 'Richard', '08712333'], ['3', 'Bapak Budi', '08733311'], ['4', 'Jokowi Dodo', '0851231']]


Contoh 2 :

import csv

contacts = []

with open('data.csv') as csv_file:

    csv_reader = csv.reader(csv_file, delimiter=",")

    for row in csv_reader:

        contacts.append(row)

labels = contacts.pop(0)

print(labels)

print(contacts)

Output :

#isi list labels:

['NO', 'NAMA', 'TELEPON']

# isi list contacts:

[['1', 'Bambang', '081234'], ['2', 'Richard', '08712333'], ['3', 'Bapak Budi', '08733311'], ['4', 'Jokowi Dodo', '0851231']]


Contoh 3 :

import csv

contacts = []

with open('data.csv') as csv_file:

    csv_reader = csv.reader(csv_file, delimiter=",")

    for row in csv_reader:

        contacts.append(row)

labels = contacts.pop(0)

#print(labels)

#print(contacts)

print(f'{labels[0]} \t {labels[1]} \t\t {labels[2]}')

print("-"*34)

for data in contacts:

    print(f'{data[0]} \t {data[1]} \t {data[2]}')

Output :


3.2. Parsing CSV menjadi Dictionary

Contoh 1 :

import csv

contacts = []

with open('data.csv') as csv_file:

    csv_reader = csv.DictReader(csv_file)

    for row in csv_reader:

        contacts.append(row)

print(contacts)

Output :

[OrderedDict([('NO', '1'), ('NAMA', 'Bambang'), ('TELEPON', '081234')]), OrderedDict([('NO', '2'), ('NAMA', 'Richard'), ('TELEPON', '08712333')]), OrderedDict([('NO', '3'), ('NAMA', 'Bapak Budi'), ('TELEPON', '08733311')]), OrderedDict([('NO', '4'), ('NAMA', 'Jokowi Dodo'), ('TELEPON', '0851231')])]


Contoh 2 :

import csv

contacts = []

with open('data.csv') as csv_file:

    csv_reader = csv.DictReader(csv_file)

    for row in csv_reader:

        contacts.append(row)

print("NO \t NAMA \t\t TELEPON")

print("-" * 32)

for data in contacts:

    print(f"{data['NO']} \t {data['NAMA']} \t {data['TELEPON']}")

Output :



4. Write file csv : tulis_csv_list.py

4.1. Menulis Data List ke CSV

import csv

with open('data.csv', mode='a') as csv_file:

    # membuat objek writer

    writer = csv.writer(csv_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    # menulis baris ke file CSV

    writer.writerow(["5", "Dian", "021100022"])

    writer.writerow(["6", "Meli", "0214444432"])

print("Writing Done!")

Output : 

jalankan kemudian jalan kan juga file parse_dic.py


4.2. Menulis Data Dictionary ke CSV

import csv

with open('data.csv', mode='a') as csv_file:

    # menentukan label

    fieldnames = ['NO', 'NAMA', 'TELEPON']

    # membuat objek writer

    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)

    # menulis baris ke file CSV

    writer.writeheader()

    writer.writerow({'NO': '10', 'NAMA': 'Via Vallen', 'TELEPON': '02109999'})

    writer.writerow({'NO': '11', 'NAMA': 'M. Andi', 'TELEPON': '02148488888'})

print("Writing Done!")

Output :

jalankan kemudian jalan kan juga file parse_dic.py



Read File XML Menggunakan Python

 


Berikut adalah cara membaca file XML menggunakan Phyton

1. Buat file XML : data.xml

<?xml version="1.0" encoding="UTF-8" ?>
<mahasiswa>
    <nama>Amir</nama>
    <alamat>Jakarta</alamat>
    <jurusan>Teknik Industri</jurusan>

    <hobi name="Blogging"/>
    <hobi name="Membaca Buku"/>
    <hobi name="Nonton Anime"/>
</mahasiswa>


2. Buat file pyhton : baca.py

Contoh 1 : 

import xml.dom.minidom as minidom

def main():
    # gunakan fungsi parse() untuk me-load xml ke memori 
    # dan melakukan parsing
    doc = minidom.parse("mahasiswa.xml")

    # Cetak isi doc dan tag pertamanya
    print doc.nodeName
    print doc.firstChild.tagName

    nama = doc.getElementsByTagName("nama")[0].firstChild.data
    alamat = doc.getElementsByTagName("alamat")[0].firstChild.data
    jurusan = doc.getElementsByTagName("jurusan")[0].firstChild.data
    list_hobi = doc.getElementsByTagName("hobi")

    print "Nama: {}\nAlamat: {}\nJurusan: {}\n".format(nama, alamat, jurusan)

    print "Memiliki {} hobi:".format(len(list_hobi))

    for hobi in list_hobi:
        print "-", hobi.getAttribute("name")


if __name__ == "__main__":
    main()


Jalankan :

#document
mahasiswa
Nama: Amir
Alamat: Jakarta
Jurusan: Teknik Industri

Memiliki 3 hobi:
- Blogging
- Membaca Buku
- Nonton Anime


Contoh 2 : Membaca node xml

import xml.dom.minidom as minidom

def main():
    # gunakan fungsi parse() untuk me-load xml ke memori 
    # dan melakukan parsing
    doc = minidom.parse("mahasiswa.xml")

    # Cetak isi doc dan tag pertamanya
    print doc.nodeName
    print doc.firstChild.tagName

    nama = doc.getElementsByTagName("nama")[0].firstChild.data
    alamat = doc.getElementsByTagName("alamat")[0].firstChild.data
    jurusan = doc.getElementsByTagName("jurusan")[0].firstChild.data
    

    print "Nama: {}\nAlamat: {}\nJurusan: {}\n".format(nama, alamat, jurusan)

    # Mendambahkan Elemen
    hobi_baru = doc.createElement("hobi")
    hobi_baru.setAttribute("name", "Programming")
    doc.firstChild.appendChild(hobi_baru)

    # Ambil kembali daftar hobi
    list_hobi = doc.getElementsByTagName("hobi")

    print "Memiliki {} hobi:".format(len(list_hobi))

    for hobi in list_hobi:
        print "-", hobi.getAttribute("name")


if __name__ == "__main__":
    main()



Output :

#document
mahasiswa
Nama: Amir
Alamat: Jakarta
Jurusan: Teknik Industri

Memiliki 3 hobi:
- Blogging
- Membaca Buku
- Nonton Anime



3. Read Write

import xml.dom.minidom as minidom

def main():
    # gunakan fungsi parse() untuk me-load xml ke memori 
    # dan melakukan parsing
    doc = minidom.parse("mahasiswa.xml")

    # Cetak isi doc dan tag pertamanya
    print doc.nodeName
    print doc.firstChild.tagName

    nama = doc.getElementsByTagName("nama")[0].firstChild.data
    alamat = doc.getElementsByTagName("alamat")[0].firstChild.data
    jurusan = doc.getElementsByTagName("jurusan")[0].firstChild.data
    

    print "Nama: {}\nAlamat: {}\nJurusan: {}\n".format(nama, alamat, jurusan)

    hobi_baru = doc.createElement("hobi")
    hobi_baru.setAttribute("name", "Programming")
    doc.firstChild.appendChild(hobi_baru)

    list_hobi = doc.getElementsByTagName("hobi")

    print "Memiliki {} hobi:".format(len(list_hobi))

    for hobi in list_hobi:
        print "-", hobi.getAttribute("name")

    file_xml = open("mahasiswa.xml","w")
    doc.writexml(file_xml)
    file_xml.close()


if __name__ == "__main__":
    main()


Output :




Read File JSON Menggunakan Python

 


Berikut adalah cara membaca file JSON menggunkan Phyton

1. Buat file JSON : data.json

{
    "name" : "Read JSON",
    "web" : "https://www.xyz.com",
    "social_media": {
        "facebook" : "belajarJSON",
        "twitter" : "@belajarJSON",
        "instagram": "@belajarJSON"
    }
}


2. Buat File python : bacadatajson.py

21. Contoh  Membaca senua data file JSON

# gunakan modul json
import json

# buka file JSON
filejson = open("data.json")

# prsing data JSON
data = json.loads(filejson.read())

# cetak isi data JSON
print(data)

Catatan : simpan file dalam folder yang sama, untuk memudahkan contoh

Setelah itu,  jalankan program bacadatajson.py.



2.2. Membaca per field

import json

# buka file JSON
filejson = open("data.json")

# prsing data JSON
data = json.loads(filejson.read())

# cetak isi data JSON
print(f"Nama: {data['name']}")
print(f"Website: {data['web']}")
print("Sosial Media:")
print(f"- Facebook: {data['social_media']['facebook']}")
print(f"- Twitter: {data['social_media']['twitter']}")
print(f"- Instagram: {data['social_media']['instagram']}")

Output :




3. Baca JSON banyak Item

Disini akan menggunakan data JSON dari API jsonplaceholder ( file JSON yang bisa dicopy ) dengan membuat link tersebut  dengan endpoint URL: https://jsonplaceholder.typicode.com/posts

File JSON :




Buat file : list_artikel.py

import json
from urllib import request

url = "https://jsonplaceholder.typicode.com/posts"

# lakukan http request
response = request.urlopen(url)

# parsing data json
data = json.loads(response.read())


# gunakan perulangan untuk menampilkan data
for i in range(len(data)):
    print(f"{i}. {data[i]['title']}")

atau 

# gunakan perulangan untuk menampilkan data
for post in data:
    print(f"- {post['title']}")


Output :



Read Write File Menggunakan Python

 

Berikut adalah cara read write menggunakan phyton

1. Buat direktori : file-io, lalu buat file text.txt dan bacafile.py.

file-io/

├── bacafile.py

└── text.txt


2. Setelah itu, buka file text.txt , kemudian isi dengan teks tersebut:

Belajar programming Phyton

Membaca file text dengan Phyton 


3. Buka file bacafile.py kemudian tambahkan script :

3.1. Contoh 1 : List

# buka file

filetext = open("text.txt", "r")

# baca isi file

print filetext.readlines()

# tutup file

filetext.close()

Output berupa list, karena menggunakan method readlines().


3.2. Contoh 2 : Baca Perbaris

# buka file

filetext = open("text.txt", "r")

# baca isi file

text = filetext.readlines()

# cetak baris pertama

print text[0]

# cetak baris kedua

print text[1]

# tutup file

filetext.close()

Hasil Output :

Belajar programming Phyton

Membaca file text dengan Phyton


3.3. Contoh 3 : Pengulangan

# buka file
filetext = open("text.txt", "r")

# baca isi file
text = filetext.readlines()

# cetak isi file dengan perulangan
for teks in text:
    print teks

# tutup file
filetext.close()

Output :


3.4. Contoh 4 : membaca semua file

# buka file

filetext = open("text.txt", "r")

# baca isi file

text = filetext.read()

# cetak isi file

print text

# tutup file

filetext.close()

Output :


4. Menulis File  : tulisbio.py 

4.1. Contoh 1 : Buat file

print "Program Biodata"

print "============="

# Ambil input dari user

nama = raw_input("Nama: ")

umur = input("Umur: ")

alamat = raw_input("Alamat: ")

# format teks

teks = "Nama: {}\nUmur: {}\nAlamat: {}".format(nama, umur, alamat)

# buka file untuk ditulis

filebio = open("biodata.txt", "w")

# tulis teks ke file

filebio.write(teks)

# tutup file

filebio.close()

Output :


File tercipta : biodata.txt


4.2. Contoh 2 : Replace atau ditulis ulang dengan yang baru.

Ada dua method yang bisa kita gunakan untuk menulis file

  • write(): parameternya teks (string)
  • writelines(): parameternya teks dalam bentuk list.

teks = "Daftar Buah"

teks_list ["Apel", "Jeruk", "Anggur", "Duren"]

f = open("file.txt", "w")

f.write(teks)

f.writelines(teks_list)


5. Menyisipkan ( Append ) : insertbiodata.py

print "Program Biodata"

print "============="

# Ambil input dari user

nama = raw_input("Nama: ")

umur = input("Umur: ")

alamat = raw_input("Alamat: ")

# format teks

teks = "\nNama: {}\nUmur: {}\nAlamat: {}\n---".format(nama, umur, alamat)

# buka file untuk ditulis

filebio = open("biodata.txt", "a")

# tulis teks ke file

filebio.write(teks)

# tutup file

filebio.close()


Output : 


Buka biodata.txt



6. Read Write File

print "Program Biodata"

print "=============="

# buka file untuk dibaca dan ditulis

filebio = open("biodata.txt", "r+")

teks = filebio.read()

# cetak isi file

print teks

# Ambil input dari user

nama = raw_input("Nama: ")

umur = input("Umur: ")

alamat = raw_input("Alamat: ")

# format teks

teks = "\nNama: {}\nUmur: {}\nAlamat: {}\n---".format(nama, umur, alamat)

# tulis teks ke file

filebio.write(teks)

# tutup file

filebio.close()


Output : 



7. Menggunakan with dan as

with open("dokumen.txt", "r") as dok:
    print dok.read()


8. Menggunakan Exception

try:

    f = open("file.txt","r")

except IOError as err:

    print "Terjadi kesalahan: {}".format(err)

output : jika terjadi errror maka akan ditampilkan pesan

Terjadi kesalahan: [Errno 2] No such file or directory: 'file.txt'


Membuat CRUD Menggunakan Spring Hibernate - IV [ Delete ]

 

Pada artikel ini merupakan lanjutan dari artikel : Membuat CRUD Menggunakan Spring Hibernate - I [ Read ]


Berikut adalah cara membuat CRUD menggunakan Spring Hibernate :

1. Tambahkan Method Save pada class BukuDAO.java

public void delete(int id);


2. Tambahkan method save() pada BukuDAOImpl.java

@Override

 public void delete(int id) {

 Buku buku = getBukuById(id);

 hibernateTemplate.delete(buku);

 }


3. Buat controller dari sebuah java class : DeleteController.java

package Controller;

import Dao.BukuDAO;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

public class DeleteController implements Controller{

 private BukuDAO bukuDAO;

 public void setBukuDAO(BukuDAO bukuDAO){

 this.bukuDAO = bukuDAO;

 }

 

 @Override

 public ModelAndView handleRequest(HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception {

 int id = Integer.parseInt(hsr.getParameter(&amp;quot;id&amp;quot;));

 bukuDAO.delete(id);

 ModelMap map = new ModelMap();

 map.addAttribute(&amp;quot;allbuku&amp;quot;, bukuDAO.getBuku());

 return new ModelAndView(&amp;quot;read&amp;quot;, map);

 }

}


4. Edit file dispatcher-servlet.xml

&amp;lt;bean name=&amp;quot;/delete.htm&amp;quot; class=&amp;quot;Controller.DeleteController&amp;quot;&amp;gt;

 &amp;lt;property name=&amp;quot;bukuDAO&amp;quot; ref=&amp;quot;BukuDAO&amp;quot;/&amp;gt;

 &amp;lt;/bean&amp;gt;


5. Tambahkan link pada file read jsp (/project-name/mapping-name) 

&amp;lt;a href=&amp;quot;/SpringHibernateCrud/delete.htm?id=${buku.id}&amp;quot;&amp;gt;Delete&amp;lt;/a&amp;gt;


6. Klik kanan project kemudian clean, lalu run


Membuat CRUD Menggunakan Spring Hibernate - III [ Update ]

 

Pada artikel ini merupakan lanjutan dari artikel : Membuat CRUD Menggunakan Spring Hibernate - I [ Read ]


Berikut adalah cara membuat CRUD menggunakan Spring Hibernate :

1. Tambahkan Method Save pada class BukuDAO.java

public Buku getBukuById(int id);


2. Tambahkan method save() pada BukuDAOImpl.java

@Override

 public Buku getBukuById(int id) {

return hibernateTemplate.get(Buku.class, id);

 }


3.  Buat sebuah Controller dari “Java Class” : ByIdController.java

package Controller;

import Dao.BukuDAO;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

 

public class ByIdController implements Controller{

 private BukuDAO bukuDAO;

 public void setBukuDAO(BukuDAO bukuDAO){

 this.bukuDAO = bukuDAO;

 }

 

 @Override

 public ModelAndView handleRequest(HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception {

 int id = Integer.parseInt(hsr.getParameter("id"));

 ModelMap map = new ModelMap();

 map.addAttribute("buku", bukuDAO.getBukuById(id));

 return new ModelAndView("update", map);

 } 

}


4. Tambahkan pada file “dispatcher-servlet.xml”

<bean name="/byid.htm" class="Controller.ByIdController">

 <property name="bukuDAO" ref="BukuDAO"/>

 </bean>


5. Edit file BukuDAO.java 

public void updateBuku(Buku buku);

6. Implementasikan method tadi pada BukuDAOImpl.java

@Override

 public void updateBuku(Buku buku) {

 hibernateTemplate.merge(buku);

 }


7. Buat sebuah controller dari “Simple Form Controller”, klik kanan package Controller --> Other --> Spring Framework --> Simple Form Controller --> lalu klik Next, Beri nama pada bagian “Class Name” kemudian klik Finish.  

package Controller;

import Dao.BukuDAO;

import Model.Buku;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;

import org.springframework.validation.BindException;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;

 

public class UpdateController extends SimpleFormController {

 private BukuDAO bukuDAO;

 

public void setBukuDao(BukuDAO bukuDAO) {

 this.bukuDAO = bukuDAO;

 }

 

 public UpdateController() {

 //Initialize controller properties here or

 //in the Web Application Context

setCommandClass(Buku.class);

 setCommandName("update");

 //setSuccessView("successView");

 //setFormView("formView");

 }

 

 @Override

 protected void doSubmitAction(Object command) throws Exception {

 throw new UnsupportedOperationException("Not yet implemented");

 }

 //Use onSubmit instead of doSubmitAction

 //when you need access to the Request, Response, or BindException objects

 @Override

 protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,

 Object command, BindException errors) throws Exception {

 Buku buku = (Buku) command;

 bukuDAO.updateBuku(buku);

 ModelMap map = new ModelMap();

 map.addAttribute("allbuku", bukuDAO.getBuku());

 return new ModelAndView("read", map);

 }

}


8. Buat file JSP, disini saya menamakannya update.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

 <head>

 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 <title>JSP Page</title>

 </head>

 <body>

 <form:form method="POST" action="/SpringHibernateCrud/update.htm" commandName="update">

 <table>

 <tr>

 <td>ID</td>

 <td>:</td>

 <td>

 <input type="text" value="${buku.id}" disabled>

 <input type="hidden" name="id" value="${buku.id}">

 </td>

 </tr>

 <tr>

 <td>Nama</td>

 <td>:</td>

 <td><input type="text" name="nama" value="${buku.nama}"></td>

 </tr>

 <tr>

 <td>Harga</td>

 <td>:</td>

 <td><input type="text" name="harga" value="${buku.harga}"></td>

 </tr>

 <tr>

 <td colspan="3"><input type="submit" name="simpan" value="Simpan"></td>

 </tr>

 </table>

 </form:form>

 </body>

</html>


9. Tambahkan  pada file “dispatcher-servlet.xml”

<bean name="/update.htm" class="Controller.UpdateController">

 <property name="bukuDao" ref="BukuDAO"/>

 <property name="formView" value="update"/>

 <property name="successView" value="read"/>

 </bean>


10. Tambahkan link pada halaman read file jsp

<a href="/SpringHibernateCrud/byid.htm?id=${buku.id}">Update</a>


11.  Clean project kemudian Run