Veritabanı CURD işlemini uygulamak için Mybatis nasıl kullanılır?

Yazar | Awen, sorumlu editör | Guo Rui

Baş resmi | Oriental IC'den CSDN indirme

Üretildi | CSDN (ID: CSDNnews)

MyBatis, özel SQL, saklı prosedürler ve gelişmiş haritalamayı destekleyen mükemmel bir kalıcılık katmanı çerçevesidir. MyBatis hemen hemen tüm JDBC kodunu ve parametrelerin ayarlanması ve sonuç kümelerinin elde edilmesi işini ortadan kaldırır. MyBatis, basit XML veya ek açıklamalar aracılığıyla ilkel türleri, arayüzleri ve Java POJO'larını (Düz Eski Java Nesneleri) veri tabanındaki kayıtlar olarak yapılandırabilir ve eşleyebilir.

Geleneksel JDBC uygulamasında, sorgu sürecini java sınıfında yazmamız gerekir ki bu daha sonraki bakım için çok zordur.Mybatis kullanılarak sorgu ifadesi yapılandırma dosyasında yapılandırılabilir ve yalnızca eşleme ilişkisinin sürdürülmesi gerekir. Aşağıda biz Xuexue'nun Mybatis'i nasıl kullandığına bir göz atalım.

Çalışmaya hazır

Öncelikle aşağıdaki yazılımı hazırlamanız gerekir:

  • fikir
  • uzman
  • mysql

Veritabanı oluşturun ve verileri ekleyin

İlk olarak, bir mybatis_db veritabanı oluşturuyoruz ve ardından bir t_user tablosu oluşturuyoruz, bu tabloya aşağıda gösterildiği gibi birkaç veri parçası ekliyoruz:

mysql > veritabanı mybatis_db oluştur; Sorgu TAMAM, 1 satır etkilendi (0,01 saniye) mysql > mybatis_db'yi kullanın; Veritabanı değişti mysql > tablo t_user ( - > id int (32) birincil anahtar auto_increment, - > kullanıcı adı varchar (50), - > işler varchar (50), - > telefon varchar (16)); Sorgu TAMAM, 0 satır etkilendi, 1 uyarı (0,01 saniye) mysql > t_user değerlerine (1, "zhangsan", "öğretmen", "13142767333") ekleyin; Sorgu TAMAM, 1 satır etkilendi (0,01 saniye) mysql > t_user değerlerine (2, "lisi", "mühendis", "13142767334") ekleyin; Sorgu TAMAM, 1 satır etkilendi (0,01 saniye) mysql > t_user değerlerine (3, "wangwu", "pilot", "12342767334") ekleyin; Sorgu TAMAM, 1 satır etkilendi (0,00 saniye) mysql >

Jar paketini indirmek için pom.xml'yi yapılandırın

Bir maven projesi oluşturuyoruz ve pom.xml'yi mybatis ve mysql-connect-java'nın jar paketlerini indirmek için yapılandırıyoruz. Mybatis'in en son sürümü 3.5.4'tür.

< bağımlılık > < Grup kimliği > org.mybatis < /Grup kimliği > < artifactId > mybatis < / artifactId > < versiyon > 3.5.4 < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > mysql < /Grup kimliği > < artifactId > mysql-bağlayıcı-java < / artifactId > < versiyon > 8.0.19 < / version > < /bağımlılık >

Tüm projenin dizini aşağıdaki gibidir:

Mybatis-config'i yapılandırın

Ardından, fikir kaynağında bir mybatis-config.xml yapılandırma dosyası oluşturuyoruz (değilse, src \ main dizininde bir dizin oluşturmak için sağ tıklamanız ve onu oluştururken kaynağı seçmeniz gerekir), içerik aşağıdaki gibidir, özellikle gerekli değildir Çok fazla açıklama, yapılandırma dosyası esas olarak, kullanılan sürücü, mysql erişim adresi, kullanıcı adı ve şifre ve eşleyiciler tarafından tanımlanan bir mybatis eşleme dosyası dahil olmak üzere JDBC ile ilgili parametreleri tanımlar.

< ? xml version = "1.0" encoding = "UTF-8"? > < ! DOCTYPE yapılandırması PUBLIC "- // mybatis.org//DTD Config 3.0 // EN" " > < konfigürasyon > < ortamlar default = "mysql" > < ortam kimliği = "mysql" > < transactionManager type = "JDBC" / > < dataSource türü = "HAVUZLANDI" > < özellik adı = "sürücü" value = "com.mysql.jdbc.Driver" / > < özellik adı = "url" value = "jdbc: mysql: //192.168.10.128: 3306 / mybatis_db" / > < özellik adı = "kullanıcı adı" değer = "kök" / > < özellik adı = "şifre" value = "123456" / > < /veri kaynağı > < / çevre > < / ortamlar > < Haritacılar > < mapper resource = "UserMapper.xml" / > < / mappers > < / configuration >

Kullanıcı sınıfı oluştur

Daha sonra, User sınıfını oluşturuyoruz ve get, set ve toString yöntemlerini oluşturuyoruz.Fikirde, IDE'ye sağ tıklayıp Generate'i seçip ardından Getter, Setter ve toString'i seçerek karşılık gelen get ve set yöntemlerini hızlı bir şekilde oluşturuyoruz.

Nihai sonuç aşağıdaki gibidir:

paket com.mybatis; public class Kullanıcı { özel Tamsayı kimliği; private String kullanıcı adı; özel String işleri; özel Dize telefon; public Integer getId { dönüş kimliği; } public String getUsername { kullanıcı adını döndür; } public String getJobs { dönüş işleri; } public String getPhone { telefona dönüş; } public void setId (Tamsayı kimliği) { this.id = id; } public void setUsername (Dize kullanıcı adı) { this.username = kullanıcı adı; } public void setJobs (Dize işleri) { this.jobs = işler; } public void setPhone (String phone) { this.phone = telefon; } @Override public String toString { döndür "Kullanıcı {" + "id =" + id + ", kullanıcı adı = '" + kullanıcı adı +' \ '' + ", işler = '" + işler +' \ '' + ", telefon = '" + telefon +' \ '' + '}'; } }

Test sınıfı oluştur

UserMapper.xml'yi yapılandırın

Daha sonra, UserMapper.xml bir eşleme dosyası oluşturuyoruz ve ardından UserMapper olarak bir ad alanı formüle etmemiz ve ardından id ve parametre türlerini ve resultType'ı tanımlamak için bir select ifadesi yazmamız gerekiyor. ResultMap, nesnelerin veritabanı sonuç kümesinden nasıl yükleneceğini açıklar.Bu en karmaşık ve en karmaşık olanıdır Güçlü unsur.

< ? xml version = "1.0" encoding = "UTF-8"? > < ! DOCTYPE eşleştiricisi PUBLIC "- // mybatis.org//DTD Eşleştiricisi 3.0 // EN" " > < mapper namespace = "UserMapper" > < ! - Kullanıcı numarasına göre kullanıcı bilgilerini alın - > < id = "findUserById" parameterType = "Tamsayı" resultType = "com.mybatis.User" seçin > t_user'dan * seçin, burada id = # {id} < / seç > < / mapper >

Ardından kullanıcıları id'ye göre sorgulamak için bir test sınıfı oluşturuyoruz:

paket com.mybatis; java.io.InputStream'i içe aktarın; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.jupiter.api.Test; / ** * @ Yetki: xxxx * @ E-posta: xxx * @title: MybatisTest * @projectName: mybatis * @ description: YAPILACAK açıklama bilgileri * @Tarih 2020/4/721:15 ** / public class MybatisTest { @Ölçek public void findUserByIdTest İstisna { Dize kaynağı = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream (kaynak); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build (inputStream); SqlSession sqlSession = sqlSessionFactory.openSession; Kullanıcı user = sqlSession.selectOne ("findUserById", 1); System.out.println (user.toString); sqlSession.close; } }

Bulanık sorgu gerçekleştirmek istiyorsak, bunu UserMapper.xml'de tanımlayın:

< id = "findUserByName" parameterType = "String" resultType = "com.mybatisdemo.User" seçin > t_user'dan * seçin; burada kullanıcı adı, concat ('%', '$ {değer}', '%') < / seç >

Benzer concat ('%', '$ {değer}', '%') kullanımı, sql enjeksiyonunun neden olduğu güvenlik risklerini önlemektir.

Ardından test etmek için test sınıfında yeni bir yöntem oluşturun:

@Ölçek public void findUserByNameTest, Exception { Dize kaynağı = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream (kaynak); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build (inputStream); SqlSession sqlSession = sqlSessionFactory.openSession; Liste < Kullanıcı > users = sqlSession.selectList ("findUserByName", "g"); for (Kullanıcı kullanıcı: kullanıcılar) { System.out.println (user.toString); } sqlSession.close; }

resim gösterdiği gibi:

Ardından, yeni bir kullanıcı eklemeyi test ediyoruz. İlk olarak, UserMapper.xml'de bir ekleme öğesi tanımlıyoruz:

< insert id = "addUser" parameterType = "com.mybatisdemo.User" > t_user (kullanıcı adı, işler, telefon) değerine ekle (# {kullanıcı adı}, # {işler}, # {telefon}) < / ekle >

Ardından test arayüzünü yazın:

@Ölçek public void addUser istisna atıyor { Dize kaynağı = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream (kaynak); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build (inputStream); SqlSession sqlSession = sqlSessionFactory.openSession; Kullanıcı kullanıcı = yeni Kullanıcı; user.setUsername ("beiluo"); user.setJobs ("DevOps"); user.setPhone ("1314566666"); int rows = sqlSession.insert ("addUser", kullanıcı); eğer (satırlar > 0) { System.out.println ("Başarılı ekleme" + satırlar + "veri!"); }Başka{ System.out.println ("veri ekleme başarısız!"); } sqlSession.commit; sqlSession.close; }

Aşağıdaki gibi:

Ardından güncellemeyi test edin:

< update id = "updateUserInfo" parameterType = "com.mybatisdemo.User" > t_user set kullanıcı adı = # {kullanıcı adı}, işler = # {işler}, telefon = # {telefon}, burada id = # {id} < /Güncelleme >

Ardından bir test sınıfı yazın:

@Ölçek public void updateUserinfo Özel Durum {{ Dize kaynağı = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream (kaynak); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build (inputStream); SqlSession sqlSession = sqlSessionFactory.openSession; Kullanıcı kullanıcı = yeni Kullanıcı; user.setId (1); user.setUsername ("jike"); user.setJobs ("qa"); user.setPhone ("13142764432"); int rows = sqlSession.update ("updateUserInfo", kullanıcı); eğer (satırlar > 0) { System.out.println ("Başarılı güncelleme" + satırlar + "veriler!"); }Başka{ System.out.println ("güncelleme verisi başarısız!"); } sqlSession.commit; sqlSession.close; }

İnfazdan sonra şuna benziyor:

Son olarak, silme işlevini test ediyoruz:

< delete id = "deleteUser" parameterType = "com.mybatisdemo.User" > t_user'dan sil burada id = # {id} < / sil >

Test sınıfları aşağıdaki gibidir:

@Ölçek public void deleteUser {istisna atar Dize kaynağı = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream (kaynak); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build (inputStream); SqlSession sqlSession = sqlSessionFactory.openSession; int rows = sqlSession.delete ("deleteUser", 1); eğer (satırlar > 0) { System.out.println ("Başarılı silme" + satırlar + "veriler!"); }Başka{ System.out.println ("verileri silme başarısız!"); } sqlSession.commit; sqlSession.close; }

Sonuçlar aşağıdaki gibidir:

Gartner'ın konteyner ürününde birinciliği kazanan Alibaba Cloud, bulut yerel için önemli savaşı kazandı!

Tencent mülakatçısı bana bunun gibi ikili ağaç hakkında soru sordu, bunda iyiyim | Kuvvet Projesi

GitHub 2000+ Star'ı edinerek, Aliyun'un açık kaynak Alink makine öğrenimi platformu çift 11 veri "oyunundan" nasıl daha iyi performans gösteriyor? | AI teknolojisi ekolojisi

Microsoft bir kişi için bir şirket mi satın alıyor? Sony programlarını kırın, hacker romanları yazın ve sağlam program hayatını izleyin!

Makine öğrenimi proje şablonu: Makine öğrenimi projesinin 6 temel adımı

IBM, Microsoft, Apple, Google, Samsung ... blok zincirindeki teknoloji devleri şimdiden çok şey yaptı!

Kıdemli programcıların özeti: Linux süreçlerini analiz etmenin 6 yöntemi, size bugünün tüm faydalarını anlatacağım: yorum alanına bir yorum bırakın ve 299 yuan değerinde bir "2020 AI Geliştiricileri Konferansı" kazanın

Programcılar tarafından yaygın olarak kullanılan genel mekanizma ile nasıl oynanır?
önceki
Zhou Hongyi tarafından tüm ağda engellenen 360 amansız general: tabandan gelen bir karşı saldırı, net değeri yüz milyonlarca olan 36 yaşına kadar çalışıyor.
Sonraki
Büyük ölçekli bir Web arama motoru mimarisi nasıl başarıyla oluşturulur?
Gartner'ın 1 numaralı konteyner ürününü kazanan Alibaba Cloud, bulut yerel savaşını kazandı
Huawei, 4188 yuan fiyatıyla P40 serisinin National Bank versiyonunu yayınladı; DJI "en az% 50 işten çıkarmalar ve temizlik planına" yanıt verdi; Firefox 75 yayınlandı
Temelleri zayıf olan programcılara ne oldu?
10 kat HD maliyeti yok! SVG oluşturma
Sıcak arama! Huawei: Bu tür programcılar 1 milyara öncülük ediyor Programcılar: Çok güzel kokulu! Ne düşünüyorsun?
Luo Yonghao: Bu yıl kırk sekiz yaşındayım ve sayısız hataya dayanabilirim; iOS14 sistem düzeyinde bir "küçük program" işlevi başlatabilir; PyCharm'ın yeni sürümü yayınlandı | Geek Headlines
Dikkatli değilseniz, RPC'nin zaman aşımı ayarı çevrimiçi bir kazadır
Excel zayıf! Bu araç günlük çalışmamı 30 dakikada tamamladı ve sıfır temel ile öğrenebilirim
Dijital dönüşüm eş için çok mu zor? AI ve IoT sert vuruşlar yapıyor
Uluslararası öğrenciler yurt dışından dönüşlerini gizleyip düğünlere katılarak yüzlerce insanın karantinaya alınmasına neden oldu
Beihu Bölge Savcılığı: Chenzhou'daki salgının önlenmesi için "güvenlik kapısında" konuşlu
To Top