Tentang generator mybatis
MyBatis Generator (MBG) adalah generator kode mybatis mybatis dan ibatis. Ini dapat menghasilkan kode untuk berbagai versi mybatis, dan kode setelah IBATIS 2.2.0. Dia dapat mengintrospeksi tabel (atau tabel) dari database dan kemudian menghasilkan objek yang mendasari yang dapat digunakan untuk mengakses tabel (beberapa) tabel. Dengan cara ini, tidak ada objek dan file konfigurasi yang diperlukan saat berinteraksi dengan tabel database. MBG memecahkan beberapa operasi crud (insert, kueri, pembaruan, hapus) sederhana yang memiliki dampak terbesar pada operasi basis data. Anda masih perlu SQL dan objek tulisan tangan pada permintaan federasi dan prosedur tersimpan.
MyBatis Generator akan menghasilkan:
Struktur tabel pencocokan Java Pojos mungkin termasuk:
Akan ada hubungan warisan yang tepat antara kelas -kelas ini. Perhatikan bahwa generator dapat dikonfigurasi untuk menghasilkan hierarki dari berbagai jenis POJOS. Misalnya, jika Anda lebih suka, Anda dapat memilih untuk menghasilkan objek entitas terpisah untuk setiap tabel.
MyBatis/Ibatis kompatibel dengan file XML pemetaan SQL. MBG menghasilkan SQL dalam konfigurasi untuk operasi CRUD sederhana untuk setiap tabel. Pernyataan SQL yang dihasilkan meliputi:
Bergantung pada struktur tabel, pernyataan yang dihasilkan akan bervariasi (misalnya, jika tidak ada kunci primer dalam tabel, maka MBG tidak akan menghasilkan pembaruan dengan metode kunci primer).
Kelas klien Java akan menggunakan objek di atas dengan tepat, dan opsional saat menghasilkan kelas klien Java. MBG akan menghasilkan kelas klien berikut untuk MyBatis 3.x:
Kelas antarmuka mapper yang dapat digunakan dengan mybatis 3.x
MBG akan menghasilkan kelas klien berikut untuk Ibatis 2.x:
Kelas DAO yang sesuai dengan kerangka kerja Spring.
Gunakan hanya DAO dari API pemetaan IBATIS SQL. DAO ini dapat dihasilkan dengan dua cara berikut: Menyediakan SQLMapClient melalui metode konstruksi atau injeksi setter.
DAO sesuai dengan kerangka kerja Ibatis DAO (bagian opsional dari Ibatis, yang sudah ketinggalan zaman, kami sarankan Anda menggunakan Spring Framework sebagai gantinya).
MyBatis Generator dapat berjalan dengan baik di lingkungan pengembangan berulang dan bertindak sebagai tugas semut atau plug-in Maven di lingkungan pembangunan yang berkelanjutan. Hal -hal penting berikut yang perlu diingat saat menjalankan MBG:
MBG akan secara otomatis menggabungkan XML yang sudah ada dan digandakan dengan file yang baru dihasilkan. MBG tidak menimpa modifikasi yang Anda buat pada XML yang telah Anda hasilkan. Anda dapat menjalankannya berulang -ulang tanpa khawatir kehilangan perubahan khusus Anda. MBG akan menggantikan semua elemen XML yang dihasilkan dalam proses sebelumnya.
MBG tidak menggabungkan file Java, itu dapat menimpa file yang ada atau menyimpan file yang baru dihasilkan ke nama unik yang berbeda. Anda dapat menggabungkan perubahan ini secara manual. Saat Anda menggunakan plugin Eclipse, MBG dapat secara otomatis menggabungkan file Java.
Penggunaan dasar
MBG terutama bergantung pada file konfigurasi XML. Pertama, kita dapat membuat kembali proyek baru bernama MyBatisgenerator, membuat tiga paket baru bernama Config, David.test, dan David.mbg. Paket konfigurasi terutama menyimpan file konfigurasi yang dibutuhkan dalam mybatis asli. Anda dapat menyalin mybatis_demo_config.xml dalam proyek di bab -bab sebelumnya dan memasukkannya ke dalam direktori ini, dll. Untuk program pengujian. Seperti namanya, David.Test adalah untuk menyimpan metode dan program pengujian yang umum digunakan berikut. Anda juga dapat menggunakan kelas alat mybatisutils di bab -bab sebelumnya dan membuat fungsi main fungsi yang sesuai untuk tujuan pengujian. Dan The Last David.mbg adalah XML yang akan kami konfigurasi hari ini dan MBG menghasilkan file konfigurasi.
Seperti yang ditunjukkan pada gambar, kami telah membuat file konfigurasi baru yang disebut mbg_configuration.xml di bawah ini. Dengan rincian sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype GeneratorConfiguration Public "-// mybatis.org//dtd MyBatis Generator Configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-genercon>" cond- " <classpathentry location = "./ lib /mysql-connector-java-5.1.26-bin.jar" /> <context id = "mybatisdemoformysql" targetruntime = "mybatis3" <!-control commentary-<commentShenerator> <!-apakah akan menghapus semua ommenated ommeratised omsy-comments-> <commentShenerator> <!-Apakah akan menghapus semua ommenated ommeratate ommerate –! Apakah akan menghapus cap waktu dari semua file yang dihasilkan secara otomatis, default ke false-> <name properti = "SuppressDate" value = "true" /> </commentgenerator> <!-basis data kontrol-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? karakterenCoding = utf8" userid = "root" kata sandi = "david0110"/> <Javatyperesolver> <!-Konversi desimal dan jenis jenis di JDBC menjadi jenis integer = "faleec =" faleec = "faleec =" FALUCB AMEOMBOM = "FALUCB ATMEREC =" FALUCBOK = "FALUCBOK =" FALUCBOM/FALUSB-FALUSBOK = "FALUCBOM/FALUSBOK =" FALUCBOM = "FALUCBOM =" FALUCBOM = "FALUCBOM =" FALUCBOC = "FALUCBOM =" FALUCBOM = </javatyperesolver> <!-Model yang sesuai dengan tabel database-> <javamodelgenerator targetPackage = "david.model" targetProject = "src"> <name properti = "enableSubpackages" value = "true" /> <nama properti = "trimstrings" value = "true" < /javaPper-"true" /> <properti = "trimstrings" value = "true" < /javaPper — /javaper — /javaPper < /javaPper < /javaPper < /java ' <sqlmapgenerator targetPackage = "david.mappers" targetProject = "src"> <name properti = "enableSubpackages" value = "true" /> < /sqlmapgenerator> <!-mengontrol antarmuka mapper-> <javaClientGenerator target targetpackage = "david. name = "EnableSubPackages" value = "true" /> <properti name = "methodNeTecalculator" value = "Extended" /> </JavaClientGenerator> <!-Skema untuk database Anda, Tablename menunjukkan bahwa DomainObjectName = "MyBAT BAGIA Anda, apakah Contoh yang Terkait-" "" MyBAT BAGABEY "" MyBAT BAGA-BADI Anda, apakah Contoh yang Terkait-"" "" BE " domainObjectName="Visitor" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <generatedKey column="id" sqlStatement="MySql" /> <columnOverride column="name" property="visitor_name" /> <colom ignorecolumn = "status" DelimitedColumnName = "false"/> </able> </context> </generatorconfiguration>
Anda dapat melihat bahwa ini adalah node ini
<slementpathentry> => Lokasi di mana paket driver JDBC disimpan dapat digunakan untuk menggunakan jalur relatif atau jalur absolut. Dalam contoh ini, jalur relatif digunakan.
<context> => mematuhi konfigurasi semua tabel dalam database, bisa ada beberapa konteks, satu konfigurasi mySQL dan satu konfigurasi oracle.
Yang utama di bawah simpul <context> adalah:
<KomentareGenerator> => Node Generator Komentar, 2 sub-tabel dalam contoh ini mewakili
SuppressAllComments => apakah akan menghapus semua file komentar yang dihasilkan secara otomatis
SuppressDate => Apakah akan menghapus cap waktu dari semua file yang dihasilkan secara otomatis, default ke false
<jdbcconnection> => Informasi Konfigurasi Koneksi Database
<javatyperesolver> => konversi tipe desimal dan angka di jdbc menjadi java.math.bigdeciaml representasi formulir
<javamodelgenerator> => Konfigurasikan kelas entitas poJO Anda, targetPackage = "david.model", sesuai dengan pendaftaran Anda, Anda dapat menamainya sesuai dengan bisnis yang sebenarnya, targetProject = "src". Di lingkungan Eclipse, jalur menuju proyek dan folder sumber umumnya disebut sebagai direktori SRC. Paket Anda akan dibuat baru di direktori ini. Jika bukan lingkungan gerhana, nilainya di sini harus menjadi jalur sistem file aktual. Jika jalur yang ditentukan tidak ada, kesalahan akan dilaporkan, karena MBG tidak akan membuat folder yang sesuai dengan sendirinya
<sqlmapgenerator> => Konfigurasi untuk menghasilkan entitas mapper.xml yang sesuai. Untuk mapper3.x, kita perlu mengetik = "xmlmapper"
<javaclientgenerator> => configure menghasilkan kelas antarmuka yang sesuai, sesuai dengan serangkaian pernyataan SQL metode CRUD di mapper.xml
<able> => Konfigurasikan database yang sesuai, yang menunjukkan bahwa nama kelas domain (yaitu, nama kelas entitas) ingin menghasilkan. Dalam contoh ini, saya menutup semua informasi pembuatan contoh yang tidak perlu
Semua informasi di atas dapat diperiksa di situs web resmi untuk dokumen yang sesuai, atau diunduh dalam file saya, dengan instruksi konfigurasi yang sesuai dan contoh aplikasi terkait. Unduh dokumennya
Setelah mengkonfigurasi informasi di atas, apa langkah terakhir? Kami akan menjalankan file skrip ini. Ada 4 cara dalam deskripsi resmi. Yang pertama adalah melalui metode baris perintah, yang kedua dan ketiga dihasilkan melalui alat -alat seperti semut atau maven. Yang terakhir dihasilkan melalui kode Java. Kami menggunakan metode menghasilkan melalui Java Barley. Metode menambahkan skrip yang dihasilkan ke kelas demorun adalah sebagai berikut:
private static void generAtEMBGConfiguration () { /** mybatis dilengkapi dengan alat generator untuk menghasilkan hal yang sesuai* / daftar <string> warnings = new ArrayList <string> (); Boolean overwrite = true; File configFile = file baru ("./ src/david/mbg/mbg_configuration.xml"); ConfigurationParser CP = ConfigurationParser baru (peringatan); Konfigurasi konfigurasi = null; coba {config = cp.parseconfiguration (configFile); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } catch (xmlparserException e) {// todo auto-generated catch block e.printstacktrace (); } DefaultShellCallback callback = new DefaultShellCallback (Overwrite); Coba {mybatisgenerator mybatisgenerator = mybatisgenerator baru (config, callback, warnings); mybatisgenerator.generate (null); } catch (InvalidConfigurationException E) {// TODO Auto-Enchenerated Catch Block E.PrintStackTrace (); } catch (sqlexception e) {// TODO Auto-Eynerated Catch Block E.PrintStackTrace (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } catch (InterruptedException E) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } System.out.println ("Konfigurasi MyBatis berhasil dihasilkan!"); } Setelah berjalan, segarkan proyek, Anda akan menemukan bahwa yang berikut secara ajaib menghasilkan konfigurasi utama untuk Anda. Bagian kotak merah dari gambar di bawah ini:
Akhirnya, mari kita gunakan hasil yang dihasilkan secara otomatis. Kami dapat merujuk ke enam bab pertama untuk menambahkan metode uji CRUD yang sesuai untuk demorun sebagai berikut:
/** Informasi pengunjung kueri*/ public static void testGenerateAdd () {sqlSession session = mybatisutils.getsqlsession (); Visitormapper VOperation = session.getMapper (Visitormapper.class); Pengunjung pengunjung = pengunjung baru (); pengunjung.setVisitor_name ("hello2"); visitor.setemail ("[email protected]"); pengunjung.setCreateTime (tanggal baru ()); int count = voperation.insert (pengunjung); session.commit (); Mybatisutils.closession (sesi); Mybatisutils.showmessages (crud_enum.add, count); } /** Informasi pengunjung kueri* / public static void testGenerateQuery (int id) {sqlSession session = mybatisutils.getsqlsession (); Visitormapper VOperation = session.getMapper (Visitormapper.class); Pengunjung Pengunjung = VOperation.SelectByPrimaryKey (ID); Mybatisutils.closession (sesi); Mybatisutils.showmessages (crud_enum.query, 1); System.out.println (pengunjung); } public static void testGeneratedElete (int id) {sqlSession session = mybatisutils.getsqlsession (); Visitormapper VOperation = session.getMapper (Visitormapper.class); int count = voperation.deletebyprimarykey (id); session.commit (); Mybatisutils.closession (sesi); Mybatisutils.showmessages (crud_enum.delete, count); } public static void testGenerateUpdate (int id) {SQLSession session = mybatisutils.getsqlsession (); Visitormapper VOperation = session.getMapper (Visitormapper.class); Pengunjung Pengunjung = VOperation.SelectByPrimaryKey (ID); System.out.println (pengunjung); Name string = visitor.getVisitor_name (); if (name.contains ("update")) {visitor.setvisitor_name (name.substring (0, name.indexof ("update"))); } else {visitor.setvisitor_name (name + "update"); } int count = voperation.updatebyprimarykey (pengunjung); session.commit (); Mybatisutils.closession (sesi); Mybatisutils.showmessages (crud_enum.update, count); System.out.println (pengunjung); } Jalankan program pengujian dan hasilnya
Apakah Anda merasa bahwa menggunakan ini telah membantu Anda meningkatkan efisiensi Anda, dan Anda tidak perlu khawatir tentang konfigurasi yang rumit. Setidaknya Anda tidak perlu melakukan langkah -langkah yang berulang dan tidak perlu. Biarkan ini diserahkan kepada alat untuk melakukan^0^. Tentu saja, dalam penggunaan aktual, kita mungkin perlu memodifikasi informasi kelas dan antarmuka yang sesuai dengan nama informasi setelah generasi. Tentu saja, beban kerja ini tidak terlalu banyak. Saya berharap konten ini akan membantu siswa yang perlu mengonfigurasinya hari ini.