Merhabalar.

JDBI yazılarının sonuncusu olan bu yazıda JDBI ile kayıt silme işlemine değineceğiz.

Benim elimde şöyle bir People tablosu bulunuyor:

Şimdi burada id bilgisi 3 olan kaydı silme işlemi yapmak istediğimizi varsayalım. Bu durumda PersonOperationsInterface arabirimine şu iki satır kodu ekliyorum:

@SqlUpdate("delete from people where id= :id")
public void deleteOneRecord(@Bind("id") int id);

Yine veri tabanı üzerinde bir değişim durumu söz konusu olduğu için metot @SqlUpdate notasyonu ile işaretli. Notasyona id’si verilecek kaydın silinme işlemini yapacak SQL komutunu parametre olarak verdik. SQL komutu içinde kullanılacak parametreyi de metodun parametre kısmında @Bind notasyonu ile tanıttık.

Silme işlemini yapmak için de kodumuz şu şekilde olacak:

package com.ilkaygunel.jdbitutorial.operation;

import com.mysql.cj.jdbc.MysqlDataSource;
import org.skife.jdbi.v2.DBI;

public class DeleteOneRecord {

    public static void main(String[] args) {
        MysqlDataSource mysqlDataSource = new MysqlDataSource();
        mysqlDataSource.setURL("jdbc:mysql://localhost:3306/JDBIDatabase");
        mysqlDataSource.setUser("root");
        mysqlDataSource.setPassword("");

        DBI dbi = new DBI(mysqlDataSource);

        PersonOperationsInterface personOperationsInterface = null;

        try {
            personOperationsInterface = dbi.open(PersonOperationsInterface.class);
            personOperationsInterface.deleteOneRecord(3);
            System.out.println("The Record Deleted Successfully!");
        } catch (Exception e) {
            System.err.println("An Error Occured!\n Error is:" + e);
        } finally {
            if (personOperationsInterface != null) {
                personOperationsInterface.close();
            }
        }
    }
}

personOperationsInterface.deleteOneRecord(3); diyerek tablodaki id bilgisi 3 olan kaydın silme işlemi yapılacak.

Metodu çalıştırdığımda konsol çıktısı şu şekilde oluyor:

Tabloya gidip baktığımda ise kaydın gerçekten silindiğini görmekteyim:

Eğer tablodaki tüm verileri silmek istersek de şu 2 satır kodu PersonOperationsInterface sınıfımıza ekleyip çağırmamız gerekecektir:

@SqlUpdate("delete from people")
public void deleteAllRecords();

Metodumuzun görevi tüm kayıtları silmek olduğu için herhangi bir parametre geçişine ihtiyaç duymuyor.

DeleteAllRecords sınıfımız da şu şekildedir:

package com.ilkaygunel.jdbitutorial.operation;

import com.mysql.cj.jdbc.MysqlDataSource;
import org.skife.jdbi.v2.DBI;

public class DeleteAllRecords {
    public static void main(String[] args) {
        MysqlDataSource mysqlDataSource = new MysqlDataSource();
        mysqlDataSource.setURL("jdbc:mysql://localhost:3306/JDBIDatabase");
        mysqlDataSource.setUser("root");
        mysqlDataSource.setPassword("");

        DBI dbi = new DBI(mysqlDataSource);

        PersonOperationsInterface personOperationsInterface = null;

        try {
            personOperationsInterface = dbi.open(PersonOperationsInterface.class);
            personOperationsInterface.deleteAllRecords();
            System.out.println("All Records Deleted Successfully!");
        } catch (Exception e) {
            System.err.println("An Error Occured!\n Error is:" + e);
        } finally {
            if (personOperationsInterface != null) {
                personOperationsInterface.close();
            }
        }
    }
}

Kodu çalıştırdığımızda konsol çıktısı şu şekilde olmaktadır:

Veritabanına gidip baktığımda ise tüm kayıtların gerçekten silinmiş olduğunu görmekteyim:

Bu yazıda anlatacaklarım da bu kadar arkadaşlar. JDBI yazı dizisini tamamlamış olduk. Başka yazılarda görüşmek üzere sağlıcakla kalın.

Selam ve Sevgilerimle