Mybatis adalah ORM semi-otomatis. Dalam menggunakan kerangka kerja ini, beban kerja paling banyak adalah menulis file pemetaan pemetaan. Karena penulisan manual mudah membuat kesalahan, kami dapat menggunakan generator mybatis untuk membantu kami secara otomatis menghasilkan file.
REVERSE REGING
1. Apa itu Rekayasa Terbalik
MyBaits mengharuskan programmer untuk menulis pernyataan SQL sendiri. Mybatis Official menyediakan rekayasa terbalik untuk secara otomatis menghasilkan kode yang diperlukan untuk eksekusi mybatis (mapper.java, mapper.xml, po ..)
Metode rekayasa terbalik yang umum digunakan dalam pengembangan perusahaan aktual:
Kode Java dihasilkan karena tabel database.
2. Unduh Rekayasa Terbalik
mybatis-generator-core-1.3.2-bundle.zip
3. Cara menggunakan (dapat menggunakannya)
3.1 Jalankan Rekayasa Terbalik
Beberapa cara untuk menjalankan rekayasa terbalik yang disediakan dalam dokumentasi resmi
Menjalankan generator mybatis
MyBatis Generator (MBG) dapat dijalankan dengan cara berikut:
(1) Dari prompt perintah dengan konfigurasi XML
(2) sebagai tugas semut dengan konfigurasi XML
(3) sebagai plugin Maven
(4) Dari program Java lain dengan konfigurasi XML
(5) Dari program Java lain dengan konfigurasi berbasis Java
(6) Anda juga dapat menghasilkan kode melalui plug-in Eclipse
Disarankan untuk menggunakan metode program Java (dari program Java lain dengan konfigurasi XML) dan tidak bergantung pada alat pengembangan.
Di bawah ini adalah proyek yang menghasilkan file terbalik, dan kemudian menyalin file yang dihasilkan secara otomatis ke proyek asli (ini dilakukan untuk berhenti secara langsung menghasilkan dalam file sumber dan menimpa file dengan nama yang sama). Tangkapan layar dari paket JAR yang diimpor dan struktur proyek adalah sebagai berikut:
Seperti yang ditunjukkan
3.2 Hasilkan file konfigurasi kode
GeneratorConfig.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype GeneratorConfigurationPublic "-// mybatis.org//dtd MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- Whether to remove the auto-generated comments true: Yes: false: No--><property name="suppressAllComments" value="true" /></commentGenerator><!--Information of database connection: driver class, connection address, username, password--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatis" userid = "root" kata sandi = "1234"> </jdbcconnection> <!-<jdbcconnection driverclass = "oracle.jdbc.oracledriver" connectionUrl = "jdbc: oracle:@127.0.1: 1521: yycg" userid = "yycg" yycc = yycc = yycc = yycc = yycc = "yycg" yycg "yycg" yycg " Default false, parse the JDBC DECIMAL and NUMERIC types to Integer, and when true, parse the JDBC DECIMAL and NUMERIC types to java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject: The location where the PO class is generated -> <javaModelgenerator targetPackage = "cn.edu.hpu.ssm.po" targetProject = "./ src"> <!-EnableSubpackages: apakah akan membiarkan skema menjadi sufiks dari paket-"name property =" enableSubpackages "value =" false " /<!-value returned name =" enableSubpackages "value =" false "false" /<! Value returned a name = the DATABASE "value =" false "false" /<! Value returned a name = the dateSubpackages "value =" false "false" /<! Value returned value returned = the dATABASE "value =" false "false" /value returned a name = The DATABASE adalah nilai "false" /> <! value = "true"/> </javamodelgenerator> <!-TargetProject: Lokasi di mana file peta mapper dihasilkan-> <sqlmapgenerator targetpackage = "cn.edu.hpu.ssmper" targetProject = ". name = "EnableSubPackages" value = "false"/> </sqlmapgenerator> <!-TargetPackage: Lokasi generasi antarmuka mapper-> <JavaClientGenerator type = "xmlmapper" TargetPackage = "cn.edu.hpu.ss.mapper" targetProject = ". Paket-> <nama properti = "enableSubpackages" value = "false"/> </JavaClientGenerator> <!-Tentukan tabel database-> <tableName = "item"> </able> <tableName = "pesanan"> </tabel> <tableName = "orderDetail"> </tabel> <"----" Table = "TableName =" TableDetail "> </tabel> <" "Tabel =" "Table" </Table "> </Table"> </tabel = "TABLEM =" TABLEM = "TABLEM =" TABLEM = "TABLEM =" TABLEM = "TABLEM =" TABLEM = "TABLEM =" TABLEM = "tabel" Tablename = "Sys_user"> </able> <Table Schema = "" TableName = "Sys_Role"> </able> <Table Schema = "" TableName = "Sys_permission"> </Table> <Table Schema = "" TableName = "Sys_user_Role"> </Table> <Table SCHEMA = "" TABLENOME = "SYS_USER_ROLE"> </TABLE> <TABLE SCHEMA = ""M =" "TABLENE_PER_PER_RECLE"> </TABLE> <"TABLE" "TABLE "M =" SYS_USER_ROLE "> </TABLE> <TABLE/"M = "M =" TABLENOCLE " -> <!-Beberapa bidang tabel memerlukan Java Type <Table Schema = "" TableName = ""> <ColumnOverride Column = "" Javatype = ""/> </able>-> </context> </GeneratorConfiguration>
3.3 Jalankan Program Generator
Generatorsqlmap.java:
impor java.io.file; impor java.util.arraylist; impor java.util.list; impor org.mybatis.generator.api.mybatisgenerator; impor org.mybatis.generator.config.configuration; impor org.mybatis.generator.config.configuration; impor org.mybatis.genor org.mybatis.generator.internal.defaultshellCallback; generators kelas publik {public void generator () melempar Exception {List <string> peringatan = arraylist baru <string> (); boolean overwrite = true; // muat file konfigurasi file configFile = Generator ("Generator. ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);} public static void main (string [] args) melempar Exception {try {GeneratorsQlMap GeneratorsqlMap = GeneratorsqlMap (); GeneratorsqlMap.Generator ();} catch (Exception e) {e.printstacktrace ();}}}}Kode yang dihasilkan:
3.4 Menggunakan kode yang dihasilkan
Anda perlu menyalin kode yang dihasilkan dalam proyek yang dihasilkan untuk proyek Anda sendiri. Mari kita salin itemsmapper.java dan itemsmapper.xml, item, dan kelas ItemSexample ke dalam proyek asli kami.
Metode pengujian di itemsmapper
Paket cn.edu.hpu.ssm.test; impor static org.junit.assert.fail; import java.util.date; import java.util.list; org.junit.before; import org.junit.test; impor org.springfrramework.context.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext.appontext org.springframework.context.support.classpathxmlapplicationContext; import cn.edu.hpu.ssmapper.itemsmapper; impor private {privatecxplesple {publicxper {publicxper; Itemsmapper itemsmapper; // anotasi sebelum memanggil metode ini sebelum menjalankan semua metode pengujian kelas ini @Beforepublic void setup () melempar Exception {applicationContext = new ClassPathXMLappLicationContext ("classpath: spring/applicationContext.xml"); itemsmapper = (itemsmapper) applicationCoUntEx. " void testDeletyPrimaryKey () {fail ("Belum diimplementasikan");} // masukkan @testpublic void testInsert () {item item = baru Item (); items.setName ("iPhone-5s"); items.setPrice (3999f); items.setDetail ("Authentic"); items.setpic ("sdasd.jpg"); item.setCreateTime (tanggal baru ()); itemsmapper.insert (item);} // Kustomisasi (Kondatif Tanggal ()); itemsmapper.insert (item);} // Kustomisasi Kondatif () Tanggal @TEDPLICEDLECLICE. {Itemsexample itemsexample = itemsexample baru (); // Bangun kondisi kueri melalui kriteria itemsexample.criteria kriteria = itemsexample.createCriteria (); criteria.andNamequalto ("tv"); // dapat mengembalikan beberapa catatan daftar <item> list = itemsmapper.selectbyexample (tv "); untuk (int i = 0; i <list.size (); i ++) {item it = list.get (i); System.out.println (it.getId ()+":"+it.getName ());}} // kueri berdasarkan kunci utama @testpublic void testSelectByPrimaryKey () {item items = volsmapper.selectbyprimarykey (1); System.out.println (items.getname () (1); @out.out.println (items.getname () (1);} @ @ @out.out.println (itemsmapper.getname (); TestUpDateByPrimaryKey () {// Perbarui semua bidang, Anda perlu bertanya terlebih dahulu dan kemudian memperbarui item item = itemsmapper.selectByPrimaryKey (1); items.setname ("iPhone"); itemsmapper.updatebyprimarykey (item); // Jika bidang yang masuk tidak kosong, gunakan metode ini dalam pembaruan batch. Tidak perlu meminta permintaan terlebih dahulu dan kemudian memperbarui //itemsmapper.updatebyprimarykeyselective(record);}}Di atas adalah kode otomatis MyBatis Reverse Engineering yang dihasilkan oleh kerangka Mybatis yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu semua orang!
Bacaan yang disarankan dari wulin.com:
Tutorial Pembelajaran Pengantar MyBatis (I) - Mybatis Start Quick
Analisis mendalam bidang mybatis oracle blob tipe menghemat dan membaca
Mybatis berlatih dao dan mapper
SQL dinamis dan kueri terkait dalam latihan mybatis