22 Şubat 2014 Cumartesi

JSF ve MySQL Veritabanı

Java ile MySQL bağlantısı kurmak için MySQL JDBC Driver kütüphanesine ihtiyacımız vardır.Bu kütüphane Netbeans ile beraber gömülü olarak gelir.Bu kütüphaneyi projemize ekledikten sonra bağlantı aşağıda ki gibi kurulur.

public class JavaMySQL {   
    static Connection con = null;   
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3307", "root", "root");
            if(!con.isClosed()){
                System.out.println("Veritabanına bağlanıldı!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Bu işlemi kendimize has bir kütüphane yazarak da yapabiliriz. Bu takdirde her defasında bu kodları yazmadan bir Connection nesnesi ve baglan() metodu ile MySQL veritabanına bağlanılabilir.Örnekde veritabanına bağlanmak için MySQLBaglantiBean classı ile baglan() metodu kullanılmıştır.
Aşağıda ki örnek de girilen değerler veritabanına kaydedilip daha sonra h:dataTable componenti ile listelenmektedir. Liste elemanının yanında ki Sil butonu ile listeden dolayısıyla veritabanından eleman silinebilmektedir.
Bu web uygulamasının önyüzü aşağıda ki gibi kodlanır.

index.xhtml

<h:body>
        <h:form>
            <h:panelGrid columns="3" border="0">
                <h:outputText value="Personel adı"/>
                <h:inputText value="#{kmb.personelad}" size="25" required="true"
                             requiredMessage="Lütfen personel adını giriniz!"
                             id="personeladi"/>
                <h:message for="personeladi" style="color: red"/>
                <h:outputText value="Personel soyadı"/>
                <h:inputText value="#{kmb.personelsoyad}" size="25" required="true"
                             requiredMessage="Lütfen personel soyadını giriniz!"
                             id="personelsoyadi"/>
                <h:message for="personelsoyadi" style="color: red"/>
                <h:outputText value="Personel görevi"/>
                <h:inputText value="#{kmb.personelgorev}" size="25" required="true"
                             requiredMessage="Lütfen personel görevini giriniz!"
                             id="personelgorevi"/>
                <h:message for="personelgorevi" style="color: red"/>
                <h:outputText value="Personel e-postası"/>
                <h:inputText value="#{kmb.personeleposta}" size="25" required="true"
                             requiredMessage="Lütfen personel epostasını giriniz!"
                             id="personeleposta"/>
                <h:message for="personeleposta" style="color: red"/>
                <h:outputText value="Personel maaşı"/>
                <h:inputText value="#{kmb.personelmaas}" size="25" required="true"
                             requiredMessage="Lütfen personel maaşını giriniz!"
                             id="personelmaasi"/>
                <h:message for="personelmaasi" style="color: red"/>
                <h:commandButton value="Kaydet" action="#{kmb.veriEkle}" id="kayit"/>
                <h:commandButton value="Temizle" type="reset"/>
                <h:outputText value=""/>
            </h:panelGrid>
            <h:messages  globalOnly="true" style="color: red"/>
        </h:form>
        <br/>
        <h:form>
            <h:dataTable value="#{kmb.liste}" var="lborder="1" id="tablo">
                <h:column>
                    <f:facet name="header">PERSONEL ADI</f:facet>
                        #{l.ad}
                </h:column>
                <h:column>
                    <f:facet name="header">PERSONEL SOYADI</f:facet>
                        #{l.soyad}
                </h:column>
                <h:column>
                    <f:facet name="header">PERSONEL E-POSTA</f:facet>
                        #{l.eposta}
                </h:column>
                <h:column>
                    <f:facet name="header">PERSONEL GÖREVİ</f:facet>
                        #{l.gorev}
                </h:column>
                <h:column>
                    <f:facet name="header">PERSONEL MAAŞI</f:facet>
                        #{l.maas}
                </h:column>
                <h:column>
                    <f:facet name="header">
                        SİL
                    </f:facet>
                    <h:commandLink action="#{kmb.veriSil(l)}" value="Sil">
                        <h:graphicImage url="http://www.777icons.com/libs/basic-vista/delete-icon.gif"
                                        width="20" height="20"/>
                    </h:commandLink>
                </h:column>
            </h:dataTable>
        </h:form>
    </h:body>

Bu sayfanın çıktısı aşağıda ki gibidir.



Gelelim asıl olayın döndüğü yere. ManagedBean'e.Bu uygulama da veritabanı işlemlerinin yapıldığı yer ManagedBean dir.Bu java classı aşağıda ki gibidir.


VeritabaniIslemBean.java

private String personelad;
    private String personelsoyad;
    private String personelgorev;
    private String personeleposta;
    private String personelmaas;
    private MySQLBaglantisi msb = new MySQLBaglantisi();
    private boolean resultSet, resultSilme;
    private static List<Personel> liste;

    public String getPersonelad() {
        return personelad;
    }

    public void setPersonelad(String personelad) {
        this.personelad = personelad;
    }

    public String getPersonelsoyad() {
        return personelsoyad;
    }

    public void setPersonelsoyad(String personelsoyad) {
        this.personelsoyad = personelsoyad;
    }

    public String getPersonelgorev() {
        return personelgorev;
    }

    public void setPersonelgorev(String personelgorev) {
        this.personelgorev = personelgorev;
    }

    public String getPersoneleposta() {
        return personeleposta;
    }

    public void setPersoneleposta(String personeleposta) {
        this.personeleposta = personeleposta;
    }

    public String getPersonelmaas() {
        return personelmaas;
    }

    public void setPersonelmaas(String personelmaas) {
        this.personelmaas = personelmaas;
    }

    public List<Personel> getListe() {
        msb.baglan();
        liste = new ArrayList<Personel>();
        String sql2 = "SELECT * FROM jsfapp.personel";
        try {
            PreparedStatement pstmt2 = (PreparedStatement) msb.getConnection().prepareStatement(sql2);
            ResultSet resultSetListe = pstmt2.executeQuery();
            while (resultSetListe.next()) {
                liste.add(new Personel(resultSetListe.getString(1), resultSetListe.getString(2), resultSetListe.getString(3),
                        resultSetListe.getString(4), resultSetListe.getString(5)));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return liste;
    }

    public String veriEkle() {
        msb.baglan();
        String sonuc = "";
        String sql = "INSERT INTO jsfapp.personel (personelad,personelsoyad,"
                + "personeleposta,personelgorev,personelmaas) VALUES(?,?,?,?,?)";
        try {
            PreparedStatement pstmt = (PreparedStatement) msb.getConnection().prepareStatement(sql);
            pstmt.setString(1, personelad);
            pstmt.setString(2, personelsoyad);
            pstmt.setString(3, personeleposta);
            pstmt.setString(4, personelgorev);
            pstmt.setString(5, personelmaas);
            resultSet = pstmt.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (!resultSet) {
            sonuc += personelad + " " + personelsoyad + " kaydedildi.";
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(sonuc));
            return null;
        } else {
            sonuc += "Kayıt işlemi başarısız!";
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(sonuc));
            return null;
        }

    }

    public String veriSil(Personel personel) {
        msb.baglan();
        String sonuc = "";
        String sql = "DELETE FROM jsfapp.personel WHERE personelad='" + personel.getAd() + "' AND personelsoyad='" + personel.getSoyad() + "'";
        try {
            PreparedStatement pstmt = (PreparedStatement) msb.getConnection().prepareStatement(sql);
            resultSilme = pstmt.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (!resultSilme) {
            sonuc += personel.getAd() + " " + personel.getSoyad() + " silindi.";
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(sonuc));
            return null;
        } else {
            sonuc += "Silme işlemi yapılamadı!";
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(sonuc));
            return null;
        }
    }
}


Personel.java

public class Personel {
   
    private String ad;
    private String soyad;
    private String eposta;
    private String gorev;
    private String maas;

    public Personel(String ad, String soyad, String eposta, String gorev, String maas) {
        this.ad = ad;
        this.soyad = soyad;
        this.eposta = eposta;
        this.gorev = gorev;
        this.maas = maas;
    }

    public String getAd() {
        return ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }

    public String getSoyad() {
        return soyad;
    }

    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }

    public String getEposta() {
        return eposta;
    }

    public void setEposta(String eposta) {
        this.eposta = eposta;
    }

    public String getGorev() {
        return gorev;
    }

    public void setGorev(String gorev) {
        this.gorev = gorev;
    }

    public String getMaas() {
        return maas;
    }
    public void setMaas(String maas) {
        this.maas = maas;
    }
}


Sil butonu ile veri silindikten sonra sayfanın görünümü aşağıda ki gibi olur.




Hiç yorum yok:

Yorum Gönder