Java web projelerinde veritabanından veya farklı kaynaktan gelen bilgilerin sayfa üzerinde listelenmesi için datatable kullanılır.Datatable kullanımına bir örnek yapacağız,örneğimizde mysql veritabanında bir tabloda tutulan verileri sayfada göstereceğiz.
Tablodaki verileri yansıtan bir pojo yazacağız.Tabloda id,başlık,yazar ve metin adında 4 adet kolon var bu tablodan id hariç diğer verileri listeleyeceğiz.
Tablodaki verilere karşılık gelen pojo
public class Yazilar { String yazar,baslik,metin; //constructor yani kurucu metot ile yeni bir obje yaratırken verileri kolay bir şekilde atayabileceğiz. public Yazilar(String yazar, String baslik, String metin) { this.yazar = yazar; this.baslik = baslik; this.metin = metin; } public String getYazar() { return yazar; } public void setYazar(String yazar) { this.yazar = yazar; } public String getBaslik() { return baslik; } public void setBaslik(String baslik) { this.baslik = baslik; } public String getMetin() { return metin; } public void setMetin(String metin) { this.metin = metin; } }
Şimdi hem mysql veritabanından verileri çekmek hemde datatable ile bu verilere ulaşabilmek için bir ManagedBean yazacağız.
import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; import javax.faces.bean.*; import java.io.Serializable; import java.sql.DriverManager; import java.sql.ResultSet; import java.util.ArrayList; @ManagedBean(name = "database") @RequestScoped public class Database implements Serializable { String baslik, yazar, metin; public String getBaslik() { return baslik; } public void setBaslik(String baslik) { this.baslik = baslik; } public String getYazar() { return yazar; } public void setYazar(String yazar) { this.yazar = yazar; } public String getMetin() { return metin; } public void setMetin(String metin) { this.metin = metin; } //Yazılar sınıfından bir liste oluşturup verileri burda tutacağız ArrayList<Yazilar> yaziListesi = new ArrayList<>(); public ArrayList<Yazilar> yazilariGetir() { try { Class.forName("com.mysql.jdbc.Driver"); com.mysql.jdbc.Connection conn = (com.mysql.jdbc.Connection)DriverManager.getConnection("jdbc:mysql://ipAdresi:3306/veritabani", "kullaniciadi", "parola"); String query = "SELECT * FROM yazilar"; java.sql.Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(query); //Sonuçlar içerisinde dönerek verileri listeye ekliyoruz while (rs.next()) { String yazar = rs.getString("yazar"); String baslik = rs.getString("baslik"); String metin = rs.getString("yazi"); yaziListesi.add(new Yazilar(yazar, baslik, metin)); } st.close(); } catch (Exception e) { System.out.println(e.getMessage()); } //Datatable bir dizi veya listi alıp işleyebilir bizde bir liste göndereceğiz return yaziListesi; } }
Şimdi ise datatable ekleyeceğimiz jsf sayfamız
package com.mesutpiskin; public class Yazilar { String yazar,baslik,metin; //constructor yani kurucu metot ile yeni bir obje yaratırken verileri kolay bir şekilde atayabileceğiz. public Yazilar(String yazar, String baslik, String metin) { this.yazar = yazar; this.baslik = baslik; this.metin = metin; } public String getYazar() { return yazar; } public void setYazar(String yazar) { this.yazar = yazar; } public String getBaslik() { return baslik; } public void setBaslik(String baslik) { this.baslik = baslik; } public String getMetin() { return metin; } public void setMetin(String metin) { this.metin = metin; } }
Çalıştırdığımızda tablodaki verilerimizi sayfa üzerinde görüntüleyebileceğiz.