Merhaba arkadaşlar bugün Android platformunda olduk popüler ve kullanışlı olan Sugar ORM kullanımını anlatacağım. Öncelikle ORM’in ne olduğundan kısaca bahsedelim. ORM (Object to Relational Mapping) Türkçesiyle Nesne ile İlişkisel Haritalama/Eşleme. Yani sistem programlama dilinde kullanılabilecek nesne yapısına uygun sanal bir veritabanı oluşturuyor. Bu şekilde veritabanı işlemleri sorgularla uğraşmadan programlama dilininin sınıfları aracılığıyla direkt olarak yapılabiliyor.
Şimdi Sugar ORM kullanımına geçelim. Öncelikle build.gradle(Module.app) dosyamıza projemizde Sugar ORM kullanmak için gerekli olan aşağıdaki gradle ekliyoruz ve derliyoruz.
compile 'com.github.satyan:sugar:1.4'
Kütüphaneyi projemize ekledik. Şimdi temel yapılandırmasını yapacağız. Bunun için Android.Manifest dosyamızı açıyoruz. application bilgilerini aşağıdaki gibi güncelliyoruz.
<application android:label="@string/app_name" android:icon="@drawable/icon" android:name="com.orm.SugarApp"> . . <meta-data android:name="DATABASE" android:value="VERİTABANIMIZINADI" /> <meta-data android:name="VERSION" android:value="1" /> <meta-data android:name="QUERY_LOG" android:value="true" /> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="PROJEMİZİN_PACKAGE_ADI" /> . . </application>
Android.Manifest dosyamızın son hali şu şekilde olacak.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.gencaysahinn.sugarormdemo"> <application android:name="com.orm.SugarApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="DATABASE" android:value="veritabanim.db"/> <meta-data android:name="VERSION" android:value="1"/> <meta-data android:name="QUERY_LOG" android:value="true"/> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.gencaysahinn.sugarormdemo"/> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
Veritabımızı Sugar ORM’e tanıttık ama Sugar ORM bizim sınıflarımızı nasıl tanıyacak? İşte bunun için veritabanında tabloya karşılık gelecek sınıflarımızı SugerRecord sınıfından extends ediyoruz. Örnek olarak Kullanici sınıfında gösterelim.
package com.gencaysahinn.sugarormdemo.models; import com.orm.SugarRecord; /** * Created by gencaysahinn on 1.12.2016. */ public class Kullanici extends SugarRecord { String kullaniciadi; String sifre; String adsoyad; public Kullanici() { } public Kullanici(String kullaniciadi, String sifre, String adsoyad) { this.kullaniciadi = kullaniciadi; this.sifre = sifre; this.adsoyad = adsoyad; } public String getKullaniciadi() { return kullaniciadi; } public void setKullaniciadi(String kullaniciadi) { this.kullaniciadi = kullaniciadi; } public String getSifre() { return sifre; } public void setSifre(String sifre) { this.sifre = sifre; } public String getAdsoyad() { return adsoyad; } public void setAdsoyad(String adsoyad) { this.adsoyad = adsoyad; } }
Şimdi temel SQL sorgularını nasıl yapacağımızı görelim.
Yeni kayıt ekleme. INSERT sorgusu
Kullanici kullanici=new Kullanici("gencaysahinn","1234","Gencay Şahin");//Bu bilgilerle yeni bir kullanıcı türettik kullanici.save(); //Türettiğimiz kullanıcıyı veritabanına kaydettik
Kayıt sorgulama. SELECT sorgusu. Sorgu sonucu bir List’e atıyoruz çünkü sorgumuzun sonucunda kriterlerimize uyan birden fazla kayıt dönebilir.
List<Kullanici> kullaniciList= Kullanici.find(Kullanici.class, "kullaniciadi=? and sifre=?", "gencaysahinn", "1234"); //Kullanıcı adı gencaysahinn şifresi 1234 olan kullanıcıyı sorguladık.
Güncelleme işlemi.UPDATE sorgusu.
Kullanici kullanici=Kullanici.findById(Kullanici.class,1); kullanici.setSifre("123456"); kullanici.save(); //1 numaralı IDye sahip kullanıcının şifresi 123456 olarak güncelledik
Silme işlemi. DELETE sorgusu
Kullanici kullanici=Kullanici.findById(Kullanici.class,1); kullanici.delete(); //1 numaral IDye sahip kullanıcıyı sildik.
Tabloda ki bütün kullanıcıları silmek için deleteAll metodunu kullanacağız. Örnek olarak veritabanımızdaki bütün kullanıcıları silelim.
Kullanici.deleteAll(Kullanici.class);
Umarım faydalı olmuştur. Sorularınızı yorumlardan yazabilirsiniz.
Bilgilendirmeniz için teşekkürler