JSF-Ders 11 Veritabanından Veri Çekmek-Datatable Veri Listeleme
Merhaba arkadaşlar bu yazımda veritabanından veri çekerek, çektiğimiz verileri datatable kullanarak ekrana yazdırmayı göstereceğim. Öncelikli olarak veri tabanı bağlantı işlemlerini bilmemiz gerekir. Eğer veritabanı bağlantısını yapamıyorsak buradan konuyla ilgili dersi görebilirsiniz. Şimdi bir örnek ile konuyu açıklayalım.
Önce bir veritabanı olması ve veritabanında verilerin olması gereklidir. Daha önceden oluşturduğumuz test veritabanına bağlanıp yine daha önceki derslerimizde kullandığımız maas tablomuzdan verileri çekeceğiz.
Maas tablomuz şu şekildedir:
Görüldüğü üzere maas tablomuzda 4 kişiye ait bilgiler yer almaktadır. Şimdi bu verileri çekerek ekrana yazdıralım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head></h:head> <body> <h:form> <h:dataTable value="#{veritabani.verileriCek()}" var="kisi"> <h:column> <f:facet name="header">İsim</f:facet> <h:outputText value="#{kisi.isim}" /> </h:column> <h:column> <f:facet name="header">Soyisim</f:facet> <h:outputText value="#{kisi.soyisim}" /> </h:column> <h:column> <f:facet name="header">Maaş</f:facet> <h:outputText value="#{kisi.maas}" /> </h:column> </h:dataTable> </h:form> </body> </html> |
Burada görüldüğü üzere bir form açılmış ve içerisinde datatable bileşeni kullanılmış. Datatable değer olarak bir list yada collection alan ve içerisindeki elemanları tek tek gezerek bir döngü oluşturarak elemanları dolaşır. Var attribute ise bize bir nesne üretir. Yani örnek olarak vermek gerekirse her elemanı var attribute değerine verdiğimiz değişkene atar. Örnekte daha iyi anlayacağınızı umarak devam ediyorum. Datatable içerisinde column’lar ile sütunlar oluşturulmuş ve facet tag ile bu sütunlara başlıklar verilmiştir. Ve en son olarak outputText ile listedeki verilere ekrana yazdırılmıştır.
Bilgiler.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package com.teknokafe; public class Bilgiler { private String isim=""; private String soyisim=""; private int maas; public String getIsim() { return isim; } public void setIsim(String isim) { this.isim = isim; } public String getSoyisim() { return soyisim; } public void setSoyisim(String soyisim) { this.soyisim = soyisim; } public int getMaas() { return maas; } public void setMaas(int maas) { this.maas = maas; } } |
Bilgiler isimli classsımızda veritabanındaki verilere karşılık gelen değişkenler ve bunlara ait get-set methodları bulunuyor.
Veritabani.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
package com.teknokafe; import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.xml.transform.Result; import com.mysql.jdbc.PreparedStatement; @ManagedBean @SessionScoped public class Veritabani implements Serializable { private List<Bilgiler>liste=new ArrayList<Bilgiler>(); Connection connection=null; PreparedStatement pre=null; public void baglanti() { try { Class.forName("com.mysql.jdbc.Driver"); connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","19961903"); } catch (Exception e) { System.err.println(" Bağlantıda Hata Var :"+e.toString()); } } public List<Bilgiler>verileriCek() { baglanti(); try { pre=(PreparedStatement) connection.prepareStatement("Select * from maas"); ResultSet resultSet; resultSet=pre.executeQuery(); liste.clear(); while(resultSet.next()) { Bilgiler bilgiler=new Bilgiler(); bilgiler.setIsim(resultSet.getString("isim")); bilgiler.setSoyisim(resultSet.getString("soyisim")); bilgiler.setMaas(resultSet.getInt("maas")); liste.add(bilgiler); } } catch (Exception e) { System.out.println("Hata Var :"+e.toString()); } return liste; } } |
Daha önceden jdbc kullanarak yaptığımız bağlantı işlemleri baglanti() methodunda yapılıyor. Liste adında ArrayList oluşturulup bu listenin türü Bilgiler class’ımızdır. Daha sonra List<Bilgiler> türünden oluşturulan verilerCek() methodunda prestatement kullanılarak veriler veritabanından çekiliyor ve ResultSet türünden ürettiğimiz resultset nesnesine atıyoruz. Resultset classı veritabanı işlemlerinin sonuçlarını tutmak için kullanılan bir class yapısıdır. Son işlem olarak while döngüsü ile resultset nesnesini dönüyor ve ürettiğimiz bilgiler nesnesindeki değişkenlerin set methodları sayesinde atama yapıyoruz. Daha sonra listemize bu nesneleri ekleyerek listeyi return ediyoruz.
Görüldüğü üzere önce veriler çekiliyor daha sonra datatable kullanılarak ekrana bastırıyoruz.
Bu dersinde sonuna gelmiş bulunmaktayız.Sıradaki dersimizde görüşmek üzere….