Bu package'ın altına manager class'ımızı oluşturdum.
Şimdi biraz yapıdan bahsedersek bu class içerisinde sorgu (insert-updete-delete-select) metotlarımızı yazacağız. Hangi tablodan sorgu yapacak isek öncelikle o tabloya ait olan Mapper nesnesine erişmemiz lazım. Bu nesne yardımı ile sorgularımızı gönderebileceğiz.
Gördüğünüz üzere CustomerMapper tipinden değer döndüren private static bir getMapper isimli metod oluşturmuşum. Bu metot içerisinde yapılandırma ayarlarında oluşturmuş olduğumuz SessionFactory class'ının getSession metodu ile ilgili class'ımızın Mapper'ı dönderilecektir. Böylelikle sorgularımız bu nesne ile gerçekleştireceğiz. Hemen alttaki metotta CustomerExample ve buna bağlı Criteria nesnesi gözünüze çarpmış olacak. Şöyle ki CustomerExample nesnesi bu şekilde gerçekleştirilen her sorguda oluşturulmalıdır. Çünkü bu example nesnesi üzerinden sorgulamalar gerçekleştirilir. Criteria nesnesi ise görüldüğü üzere ilgili example'a ait kriterleri içerecektir. Resimde de gördüğünüz üzere hangi example'a ait ise o example'ın createCriteria metodu ile nesne oluşturulur. Bu Criteria nesnesi içerisine yine ekranda bir kısmını gördüğünüz kriterleri set edebiliriz. Örnekler ile gösterir isem;
getCustomerListByFirstName metodu'nun içerisinde parametre olarak verilecek firstName'e ait kayıtların filtrelenmesini istiyorum. Yukarıda görüldüğü şekilde andCustomerFirstNameEqualTo metodu içerisine bu parametre veriliyor. Bununla birlikte extra olarak aynı şekilde surName ile kriter ekleyebilirdik. Bunun için hemen bir alt satıra "criteria.andCustomerSurNameEqualTo(surName);" şeklinde bir kriter belirlemeliydik.
getCustomerCount metodu içerisinde de yine example nesnesi kullanılarak database'de bulunan kayıtların sayısını countByExample metotu ile ulaşabiliriz.
getCustomerByAge metodu biraz daha kompleks yapıda olup doğum yılı verilen iki tarih arasında olan ve bu kayıtlar arasında doğum yılı büyükten küçüğe olacak şekilde olan Customer kayıt listesini elde eder.
insert metodu ile oluşturulan bir Customer nesnesi üzerinden database'e kayıt atılabilir.
Bu kısa açıklamaların ardından öncelikle database'in durumunu gösterelim.
Şimdi bu metotları nasıl kullanabileceğimizi örnekleyeyim.
Görüldüğü üzere CustomerManager sınıf ismi ile yazdığımız metotların public ve static olması nedeniyle erişebildik ve kod okunaklığı açısından güzel oldu. Bununla birlikte ilgili tabloya ait metotlar bu şekilde o tabloya ait manager class'ı oluşturup içine yazılırsa hoş bir düzen sağlayacaktır. Resimdeki class'ı run ettiğimde Console ekranına düşen sonuçların istediğim şeyler olduğunu görüyorum.