Integrasi Musim Semi dan Mybatis
Ide Integrasi
Musim semi perlu mengelola SQLSessionFactory melalui singleton.
Spring dan Mybatis mengintegrasikan untuk menghasilkan objek proxy dan menggunakan SQLSessionFactory untuk membuat SQLSESSION. (Integrasi Spring dan Mybatis secara otomatis selesai)
Pemetaan lapisan kegigihan perlu dikelola oleh musim semi.
Mengintegrasikan lingkungan
Buat proyek Java baru (dekat dengan struktur teknik yang dikembangkan yang sebenarnya)
Paket Jar:
Paket JAR MYBATIS3.2.7
Paket Jar Spring3.2.0
Paket Mybatis dan Spring Integration: Integrasi IBATIS dan Spring awal disediakan oleh Spring, dan sekarang Mybatis dan Integrasi Musim Semi disediakan oleh Mybatis.
Semua paket stoples (termasuk springmvc)
Struktur Teknik
Langkah 1: Mengintegrasikan dan Konfigurasi SQLSessionFactory
Konfigurasikan SQLSessionFactory dan Sumber Data di ApplicationContext.xml
SQLSessionFactory berada di bawah paket integrasi Mybatis dan Spring.
<!-Memuat file konfigurasi-> <konteks: properti-placeHolder location = "classpath: db.properties" /> <!-sumber data, gunakan dbcp-> <bean id = "datasource" wrash-method = "tutup"> <nama properti = "driverclassname" value = "$ {jdbc.driver} name =" name = "" $ "$" value = "$ {jdbc.url}" /> <name properti = "userName" value = "$ {jdbc.userName}" /> <name properti = "kata sandi" value = "$ {jdbc.password}" /<nama properti = "MaxActive" value = "10" /<password = "MaxId =" MAXID = "MAXACTIVE" Value = "10" /<Name Properti = "MAXID =" MAXID = "MAXACTIVE /Value =" 10 " /<Name Properti =" MAXID = "MAXID =" Nilai /Nilai /Nilai /Nilai /Nilai < /10 " /> <props name =" MaxID-! SQLSessInfactory-> <bean id = "sqlsessionFactory"> <!-Muat file konfigurasi mybatis-> <name properti = "configLocation" value = "mybatis /sqlmapconfig.xml" /> <!-sumber data-> <nama properti = "dataSource" refr = "datasor =" DataSource " /> <!Pengembangan asli (setelah integrasi dengan musim semi)
sqlmap/user.xml
Muat user.xml di sqlmapconfig.xml
DAO (Implement Class Warisan SQLSessiondaOsupport)
Sebelumnya, kelas implementasi antarmuka DAO diperlukan untuk menyuntikkan SQLSessOinFactory dan menyuntikkannya melalui pegas.
Di sini kami menggunakan Spring untuk mendeklarasikan metode konfigurasi dan mengkonfigurasi kacang DAO:
Biarkan userdaoImpl mengimplementasikan kelas mewarisi sqlsessiondaosupport
Konfigurasikan DAO
Konfigurasikan antarmuka DAO di ApplicationContext.xml
<!-Antarmuka DAO Asli-> <bean id = "userdao"> <name properti = "sqlSessionFactory" ref = "sqlSessionFactory"/> </bean>
Prosedur Pengujian
source_folder/UserDaoImplTest.javapublic class UserDaoImplTest {private ApplicationContext applicationContext;//Get spring container in setUp method @Beforepublic void setUp() throws Exception {applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");}@Testpublic void testFindUserbyId () melempar Exception {userdao userdao = (userdao) applicationContext.getBean ("userdao"); // hubungi pengguna pengguna pengguna = userdao.finduserbyid (1); System.out.println (user);}}Pengembangan Agen Mapper
Usermapper.xml dan usermapper.java
Cukup salin proyek sebelumnya dan hapus jalur paket.
Buat objek proxy melalui mapperfactorybean
Karena usermapper bukan jenis antarmuka, Anda perlu menggunakan mapperfactorybean untuk menghasilkan jenis antarmuka
Masalah dengan metode ini:
Itu perlu dikonfigurasi untuk setiap mapper, merepotkan.
Pemindaian Mapper melalui MappersCannerConfigurer (Direkomendasikan)
* Setelah mengkonfigurasi jalur pemindaian mapper melalui properti Basepackage, tidak perlu mengkonfigurasi jalur pemindaian di sqlmapperconfig.xml.
Properti SQLSessionFactoryBeanName digunakan di sini karena jika properti SQLSessionFactory dikonfigurasi, file konfigurasi database dan konfigurasi sumber data tidak akan dimuat terlebih dahulu (DB.Properties)
Kode uji
REVERSE REGING
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 ..)
Dalam pengembangan perusahaan yang sebenarnya, metode rekayasa terbalik yang umum digunakan: menghasilkan kode Java karena tabel database.
Unduh Reverse Engineering
Cara menggunakan (dapat menggunakan) menjalankan rekayasa terbalik
Disarankan untuk menggunakan metode program Java dan tidak bergantung pada alat pengembangan.
Menghasilkan file konfigurasi kode (4 tempat yang perlu dimodifikasi)
Lokasi di mana kelas PO dihasilkan: cn.itcast.ssm.po
Lokasi di mana file pemetaan mapper dihasilkan: cn.itcast.ss.mapper
Lokasi antarmuka mapper yang dihasilkan: cn.itcast.ssmper
Tentukan Tabel Basis Data:
<Table tableName = "item"> </able> <Table TableName = "Pesanan"> </able> <tableName = "orderDetail"> </able> <tableName = "user"> </able> <? xml versi = "1,0" encoding = "utf-8"?> <! DoctypeTypeGuration GenerorPuburation. 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 automatically generated comments true: Yes: false: No--><property name="suppressAllComments" value="true" /></commentGenerator><!-- Information on database connections: driver class, connection address, username, password--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatis" userid = "root" password = "mysql"> </jdbcconnection> <!- <jdbcconnection driverclass = "oracle.jdbc.oracledriver" connectionUrl = "jdbc: oracle:@127.0.0.1: 1521: yycg" Userid = "yycg" yycg "@yycg"/yycg " -> <!-Default False, JDBC tipe desimal dan numerik menyelesaikan ke integer. Bila benar, tipe desimal dan numerik JDBC diselesaikan untuk java.math.bigdecimal-> <javatyperesolver> <nama properti = "forcebigdecimals" value = "false" /> </javatyperesolver> <!-TargetProject: Lokasi kelas PO yang dihasilkan-> <Javamod> TargetPackage = "cn.itcast.ssm.po" targetProject = "./ src"> <!-EnableSubPackages: Apakah akan menggunakan skema sebagai akhiran paket-> <nama properti = "EnableSubPackages" value = "false" /> <! /> </javamodelgenerator> <!-TargetProject: Di mana file peta mapper dihasilkan-> <sqlmapgenerator targetpackage = "cn.itcast.ss.mapper" targetProject = "./ src" <!-enableSubpackage: apakah akan membiarkan skema menjadi suffix paket itu-"falure" fies = "apakah ada skema skema dari paket fiupx"> <! /> </sqlmapgenerator> <!-TargetPackage: Lokasi Mapper Interface Generation-> <JavaClientGenerator type = "xmlmapper" targetPackage = "cn.itcast.ss.mapper" TargetProject = ". value = "false"/> </javaClientGenerator> <!-tentukan tabel database-> <tableName = "item"> </able> <tableName = "orders"> </able> <tableName = "orderDetail"> </tabel> <tableName = "user"> </table> </context>
Jalankan generator
Kode yang dihasilkan
Gunakan kode yang dihasilkan
Anda perlu menyalin kode yang dihasilkan dalam proyek yang dihasilkan untuk proyek Anda sendiri.
Metode pengujian di itemsmapper
// Kondisi Kustom query @testpublic void testSelectByExample () {itemsexample itemsexample = itemsexample baru (); // Konstruksi kondisi kueri melalui kriteria itemsexample.criteria criteria = itemsexample.createCriteria (); criteria.andnameequalto ("noteBook 3"); itemsmapper.selectByexample (itemsexample); system.out.println (daftar);} // kueri @testpublic void berdasarkan pada kunci utama testselectByprimarykey () {item items = itemsmapper.selectbyprimarykey (1); System.out.println (item item);} {1TinSpublic (1); System.out.println (items items);}//SERCINE @public (1); System.out.println (items items); {} @public (1); System.out.println (item); {{1); Item (); items.setName ("seluler"); items.setPrice (999f); itemsmapper.insert (item);} // Perbarui data @testpublic void testupdatebyprimarykey () {// perbarui semua bidang, Anda perlu menanyakannya pertama dan kemudian memperbarui item = itemsmapper.selectbyprimary. Cup "); 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 analisis singkat tentang integrasi dan rekayasa balik musim semi dan mybatis, yang saya harap akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!