Bangun platform mybatis+postgresql dari awal
Baru -baru ini, database proyek menggunakan PostgreSQL untuk mengoperasikan data menggunakan mybatis asli. Tidak ada yang salah dengan mybatis asli. Namun, ada alat TK.Mybatis di Cina yang membantu kita melakukan banyak hal praktis. Dalam kebanyakan kasus, kita perlu memproses mybatis asli. Pada dasarnya telah diimplementasikan dengan baik. Artikel ini akan membagikan langkah -langkah terperinci untuk menginstal PostgreSQL, mengkonfigurasi tk.mybatis, dan beberapa masalah kecil yang mungkin ditemui dalam proses ini.
Instal PostGresql, jalankan perintah berikut untuk menginstal: Salin kode sebagai berikut: APT-GET UPDATE && APT-GET INSTAL POSTGRESQL
Setelah server diinstal, kami juga membutuhkan PDADMIN Klien dengan antarmuka grafis. Saya menginstal versi Windows dari Postgresql, dan Anda dapat menemukan versi yang sesuai di alamat ini. Setelah instalasi berhasil, pengguna sistem dan pengguna basis data akan dibuat secara default. Nama dan kata sandi semuanya postgres. Kami dapat membuat pengguna baru atau menggunakan akun ini secara langsung. Bagaimanapun, saya hanya tes. Setelah instalasi selesai, Anda dapat menghadapi masalah akses jarak jauh:
Masalah koneksi jarak jauh, hanya koneksi lokal yang diizinkan secara default. Untuk mengizinkan klien lain terhubung, kami dapat memodifikasi file konfigurasinya. Direktori file ini terletak di /etc/postgresql/9.5/main. Ada dua file di direktori ini:
1: postgresql.conf, ini terkait server, dan ada alamat listen_address, yang hanya mendengarkan secara lokal secara default, dan kami dapat memodifikasinya.
2: pg_hba.cof, ini terkait dengan izin pengguna, ada konfigurasi terkait koneksi, yang dapat dikonfigurasi dalam mode gateway
Setelah koneksi yang sukses, mungkin seperti ini, kita dapat membuat basis data, tabel, dan objek lainnya.
Generator Kode MyBatis, pemetaan basis data dan model, pekerjaan mekanis seperti itu harus diserahkan kepada mesin. Silakan merujuk ke detailnya di sini.
Mapper Umum, Operasi Tabel Single CRUD dapat mengabstraksi antarmuka publik, dan mapper umum yang disediakan oleh TK.Mybatis dapat membantu kita menyelesaikan masalah jenis ini.
---- mapper.xml, cukup kecil (termasuk hanya peta lapangan)
<mapper namespace = "com.jim.logstashmvc.dao.generated.mapper.productmapper"> <resultMap id = "baseeresultMap" type = "com.jim.logstashmvc.dao.generated.entity.product"> <!-warning-@[email protected] "> <!-warning-@mbggennened" cololed.entity.entity.product "> <!-warning-@mbggennened" cololered.entity.product "> <!-warning-@mbggennened" cololered-enttity.product "> <!-warning-@mbggennened" cololered-enteMer properti = "id" /> <column hasil = "name" jdbctype = "varchar" properti = "name" /> < /resultMap> </mapper>
---- mapper, cukup sederhana (cukup wariskan dari antarmuka mapper)
Salinan kode adalah sebagai berikut: Public Interface ProductMapper Extends Mapper <product> {}
Plugin, berikut adalah plugin paging, plugin analisis kinerja SQL, dll., Sangat mudah untuk diintegrasikan dengan mybatis.
Bagaimana cara berintegrasi dengan musim semi?
Integrasi generator, Anda dapat menggunakan metode Maven untuk menjalankan generator kode.
Bergantung pada paket
<!-mybatis-> <dependency> <GroupId> org.mybatis </groupId> <ArtifactId> mybatis </artifactid> <version> $ {mybatis.version} </version> </dependency> <!-Integrasi Spring-> <dependency> <groupid> </Versi </Dependency> <! <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- MBG --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>${MBG.version}</version> <scope>compile</scope> <optional>true</optional> </dependency> <!-- Pagination--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!-General mapper-> <dependency> <GroupId> tk.mybatis </proveDid> <ArtifactId> mapper </artifactid> <version> $ {mapper.version} </version> </dependency> <!-tkmybatis akan menggunakan annotations JPA-> </dependency> <! <ArTifactId> Persistence-API </artifactId> <version> 1.0 </version> </gandendency> <dependency> <GroupId> org.postgresql </groupid> <ArtifactId> postgresql </artifactid> <version> 9.3-1102-jdbc41 </Versi> </Versi> </Versi> </Versi> 9.3-1102Plug-in Generator Konfigurasi, tentukan jalur file konfigurasi, dependensi konfigurasi: satu adalah driver database, dan yang lainnya adalah mapper umum
<!-MBG-> <Plugin> <GroupId> org.mybatis.generator </groupid> <ArtifactId> mybatis-generator-maven-plugin </t Artifactid> <version> $ {mbg.version} </version> <Configuration> <ConfigurationFile> $ {berbasis} /src/main/resources/generator/generatorconfig.xml </configurationfile> <Anvwrite> true </overwrite> <verbose> true </verbose> </Configuration> <dependency> <vendency> <VERBUPID> <ArtifactId> Postgresql </stifactid> <version> 9.3-1102-jdbc41 </version> </gandendency> <dependency> <groupid> tk.mybatis </groupid> <t Artifactid> </arttifactid> <version> $ {mapper.version} </Version> </artifactid> </Versi> $ {Mapper.version} </Version> </Version> </versi </Version>File Konfigurasi Generator
** Mengkonfigurasi Koneksi Basis Data
** Konfigurasikan jalur penyimpanan model yang dihasilkan, mapper dan mapper.xml
** Konfigurasikan informasi tabel yang akan dihasilkan
Perhatikan TargetRuntime, di sini adalah MyBATIS3Simple, dan opsi defaultnya adalah MyBATIS3. Jika kita menggunakan mapper umum, kita dapat menulis ini saat memindai antarmuka di musim semi.
Salin kode sebagai berikut: <bean> <name properti = "sqlSessionFactoryBeanname" value = "jimsqlsessionfactory"/> <properti nama = "basepackage" value = "com.jim.logstashmvc.dao.generated.mapper"/</bean>
Jika mybatis3, format mapper.xml yang dihasilkan akan jauh lebih rumit. Saya telah mengalami masalah ini sebelumnya: menggunakan mapper.xml yang dihasilkan oleh mybatis3, kemudian secara tidak benar mengkonfigurasi MappersCannerConfigurer ke mode Mapper umum berikut, yang meminta saya sebagai berikut. Alasannya dapat ditentukan untuk menjadi masalah konfigurasi (bukan ID duplikat di mapper.xml). Saya akan mempelajari konfigurasi mapper non-generik nanti.
Salin kode sebagai berikut: Disebabkan oleh: java.lang.illegalargumentException: Koleksi pernyataan yang dipetakan sudah berisi nilai untuk com.jim.logstashmvc.dao.generated.mapper.productmapper.selectbyexampleat org.apache.ibatis.Session.onfigurasi $ konfigurasi $ konfigurasi $ konfigurasi $ konfigurasi $ konfigurasi $ org.apache.ibatis.session.configuration $ strictmap.put (configuration.java:809)
Konfigurasi generator adalah sebagai berikut:
Salin kode sebagai berikut: <GeneratorConfiguration> <Properties Resource = "config.properties"/> <context targetRuntime = "mybatis3siple" defaultModeltype = "flat"> <name property = "startdelimiter" value = "` "/> <Properti nama =" endDelimiter "value" ``> <"`> <"oxlimer =" ``> <"oMPLED" ``> name = "Mappers" value = "$ {mapper.mapper}"/> </lugin> <jdbcconnection driverclass = "$ {jdbc.driverclass}" connectionUrl = "$ {jdbc.url}" UserId = "$ {jdbc.username {JDBC =" $ "$ {$ {$ {jdbc.username {JDBC =" $ "$" $ <javaModelgenerator targetPackage = "$ {targetModelPackage}" targetProject = "$ {targetJavaproject}"/> <sqlmapgenerator targetPackage = "mapper" targetproject = "$ {targetResProjectProject}"/<JavaClivent = "$ {targetResProject {" JAVACLEMPER = "JAVACLEMPER =" JAVACLEMPER = "JAVACLEMPER =" JAVACLEPPERPROPPER = " TargetProject = "$ {TargetJavaproject}" type = "xmlmapper"> </JavaClientGenerator> <able TableName = "Produk" DomainObjectName = "Produk"> </Table> </context> </GeneratorConfiguration> Mengkonfigurasi parameter berjalan Maven seperti yang ditunjukkan pada gambar di bawah ini.
Integrasi MyBatis terutama mengonfigurasi informasi kumpulan koneksi, plug-in, pemindaian mapper, dan informasi lainnya.
<bean id = "jimdataSource"> <name properti = "driverclassname" value = "$ {jdbc.driverclass}"/> <name properti = "url" value = "$ {jdbc.url}"/> <nama properti = "name" "value =" $ {jdbc.usern} <Propertame = "" $ "$" $ "$" value = "$ {jdbc.password}"/> <name properti = "inisialisasi" value = "5"/> <name properti = "minidle" value = "10"/> <name properti = "maxwait" value = "60000"/> <nama properti = "timeBeteVictionRunsmillis" value = "60000"/> <Properti = "MINICEVICTIONRUNSMILLIS" value = "60000"/<"MINICEID" MINIDLEVICTION "60000" value = "3600000"/> <name properti = "validationquery" value = "pilih 1"/> <name properti = "testwhileIdle" value = "true"/> <name properti = "testonborrow" value = "false"/> <name properti = "testonborrow" value = "false"/<name property = "testonReturn" value = "false" false " id = "jimsqlsessionfactory"> <name properti = "DataSource" ref = "jimdataSource"/> <name properti = "mapperlocations" value = "classpath: mapper/*. xml"/> <nama properti = "TypealiSespackage" value = "com.jim.logsashmc." "value" value "com.jim.logs.log." <rray> <bean> <name properti = "properti"> <value> dialek = postgresql wajar = dukungan trueMethodsArguments = true returnPageInfo = periksa params = count = countsql </ value> </prop Properti> </bean> </array> </properti> </bean> <bean> </bean = "sutra" </property> </bean> <bean> </bean = "sutra" </property> </bean> <bean> </bean = "suterf" sange "</bean> <bean> <bean> name property =" suterf " value = "jimsqlsessionfactory"/> <properti nama = "basepackage" value = "com.jim.logstashmvc.dao.generated.mapper"/> </bean>Penggunaan Mapper Umum:
• Mapper, semua pemetaan yang dihasilkan diwarisi dari Mapper <T>, dan menahan semua antarmuka Mapper umum secara default, termasuk operasi CRUD yang umum.
• IService, definisi antarmuka mapper umum, kami dapat memodifikasi antarmuka ini sesuai dengan bisnis kami sendiri
@ServicePublic Interface IService <T> {t SelectBykey (Kunci Objek); int save (t entitas); int hapus (kunci objek); int updateL (t entitas); int updateNotnull (t entitas); Daftar <T> SelectByExample (contoh objek); // todo orang lain ...}Baseservice, kelas implementasi mapper umum
Public Abstract Class Baseservice <T> mengimplementasikan IService <T> {@Autowired dilindungi mapper <T> mapper; mapper publik <T> getMapper () {return mapper; } @Override public t SelectByKey (Kunci objek) {return mapper.selectByprimaryKey (key); } public int save (t entitas) {return mapper.insert (entitas); } public int delete (tombol objek) {return mapper.deletyprimarykey (key); } public int updateL (t entitas) {return mapper.updatebyprimarykey (entitas); } public int updateNotNull (t entitas) {return mapper.updateByPrimaryKeyselective (entitas); } Daftar Publik <T> SelectByExample (Contoh Objek) {return mapper.selectByExample (contoh); } // todo orang lain ...}Kategori layanan tertentu
@ServicePublic Class ProductServiceImpl memperluas BASESERVICE <Product> mengimplementasikan ProductService {@Override Daftar Publik <product> SelectByProduct (Produk Produk, Halaman Int, Baris Int) {Contoh Contoh = Contoh Baru (Product.Class); Contoh. Kriteria kriteria = contoh.createCriteria (); if (! stringutils.isblank (product.getName ())) {criteria.andequalto ("name", product.getName ()); } if (product.getId ()! = null) {criteria.andequalto ("id", product.getId ()); } PageHelper.startpage (halaman, baris); return selectbyexample (contoh); }}Pasang Postgresql dan berhasil menghubungkan jarak jauh, mengintegrasikan MBG untuk menghasilkan mapper dan model, kemudian mengintegrasikan mybatis dengan musim semi, dan akhirnya menghubungkannya melalui mapper umum untuk mencapai tujuan kami: untuk menyelesaikan sebagian besar pekerjaan melalui sejumlah kecil kode, dan menyerahkannya ke alat untuk pekerjaan yang diulangi. Tetapi General Mapper memiliki kelebihan dan kekurangannya, dan perlu seimbang sesuai dengan lingkungan proyek. Saya pribadi merasa bahwa manfaatnya lebih besar daripada kerugiannya.
Dikutip oleh artikel ini:
1. Http://www.mybatis.tk/
2. Https://github.com/abel533/mybatis-spring
Di atas adalah semua konten artikel ini. Saya harap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.