Mybatis adalah kerangka kerja lapisan kegigihan yang mendukung pertanyaan SQL biasa, prosedur tersimpan dan pemetaan lanjutan.
Mybatis menghilangkan pengaturan manual hampir semua kode dan parameter JDBC dan enkapsulasi pencarian dari set hasil.
Mybatis dapat menggunakan XML sederhana atau anotasi untuk konfigurasi dan pemetaan asli, antarmuka pemetaan dan pojo Java (objek java tua biasa) ke dalam catatan dalam database.
Setiap aplikasi MyBatis mengambil contoh objek SQLSessionFactory sebagai inti.
Sebuah contoh dari objek SQLSessionFactory dapat diperoleh melalui objek SQLSessionFactoryBuilder. Objek SQLSessionFactoryBuilder dapat dibangun melalui file konfigurasi XML atau dari instance kelas konfigurasi yang disiapkan dalam manajemen penggunaan sebelumnya.
DataSource DataSource = BlogDataSourceFactory.GetBlogDataSource (); TransactionFactory TransactionFactory = JDBCTransactionFactory (); // Lingkungan Lingkungan = Lingkungan Baru ("Pengembangan", TransactionFactory, DataSource); Konfigurasi Konfigurasi = Konfigurasi Baru (Lingkungan);//Maprans Transaction, Mapper); Konfigurasi Konfigurasi = Konfigurasi Baru (Lingkungan);//Mapper configuration.addmapper (blogmapper.class); sqlSessionFactory sqlSessionFactory = SQLSessionFactoryBuilder baru (). Build (Configuration);Perhatikan bahwa dalam hal ini konfigurasi adalah untuk menambahkan kelas mapper. Kelas mapper adalah kelas Java, yang berisi anotasi pernyataan pemetaan SQL untuk menghindari dependensi dalam file XML, tetapi pemetaan XML masih diperlukan di sebagian besar pemetaan canggih (seperti pemetaan bergabung bersarang).
Untuk alasan ini, jika ada file konfigurasi XML, MyBatis akan secara otomatis menemukan dan memuat file XML Peer (dalam hal ini, berdasarkan nama kelas BlogMapper.class Class di bawah jalur kelas, maka BlogMapper.xml akan dimuat, kelas dan XML yang sama di Dekrit.
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper naMapper =" naMapper. " Selesaikan masalah bahwa nama properti model tidak konsisten dengan nama kolom kolom di tabel data jdbctype harus dikapitalisasi-> <resultMap type = "user" id = "userMap"> <id properti = "id" kolom = "id" javatype = "int" jdbctype = "integer"/<result property "name =" jvaType = "jdbctype =" integer "/<result property" name = "name =" jdbctype = "integer"/<property "name" vARCOP = "name =" JDBCTY " <Properti result = "usia" kolom = "usia" javatype = "int" jdbctype = "integer"/> </resultMap> <!- perhatikan hasilnya di sini. Jika kolom == properti, Anda dapat langsung mengembalikan objek Java. Jika nama atribut tidak konsisten dengan nama kolom, solusinya adalah sebagai berikut: 1. Gunakan HasilMap; 2. Hashmap kembali; 3. Use alias for the query statement--> <select id="getUser" parameterType="int" resultMap="UserMap"> select * from t_user where id=#{id} </select> <delete id="deleteUser" parameterType="int" > delete from t_user where id=#{id} </delete> <update id="updateUser" parameterType="User" > Perbarui T_USER SET USERNAME =#{name}, usia =#{usia} di mana id =#{id} </update> <masukkan id = "insertUser" parameterType = "user"> masukkan ke dalam t_user (username, useR) name (#{name},#{usia}) </insert> <!-Model-Model (#{name},#{usia}) </insert> <! <Pilih id = "getUsers" resultMap = "USERMAP"> SELECT * DARI T_USER </SELECT> </mapper> Daftar ke mybatis.xml [bila dikombinasikan dengan pegas, file konfigurasi ini tidak akan diperlukan]
File konfigurasi mybatis
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Configuration Public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <viguration> <pourse/JoDC.POKS = JABC.POKS.POXION/JABC.POXION- " Konfigurasikan Alias Kelas Entitas-> <Typealiases> <!-<Typealias type = "com.web.model.user" alias = "user"/>-<nama paket = "com.web.model"/> </typealiases> <!-pengembangan: mode pengembangan kerja: mode kerja-> <lingkungan default = " /> <datasource type = "pooled"> <properti name = "driver" value = "$ {driver}" /> <name properti = "url" value = "$ {url}" /> <name properti = "nama pengguna" value = "$ {{Username}" /< /> <nama properti = "" value = "$ {$} {{Username}" /< /> < /< /< /"value =" $ {$} "{{Username}" <mapper Resource = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/web/mapper/ordermapper.xml"/> <mapper/> </phappers> </configuration>Di sini kami menggunakan file XML untuk mendapatkan SQLSessionFactory dan SQLSession.
public static SQLSessionFactory getFactory () {/*mengalir src dir*/string resource = "mybatis.xml";/*mybatisutils.class.getResourceasStream (sumber daya) ---- salah !!! * Harap bedakan dua naik dan turun * */inputStream inputStream = mybatisutils.class.getClassLoader (). getResourCeasStream (sumber daya); sqlSessionFactory factory = return sqlSessionFactoryBuilder (). kirim;/* dua solusi: 1. factory.opensession (true); 2.Session.Commit (); */ /*Gunakan sql xml bukan anotasi*/@tes public void testAdd () {SQLSession session = mybatisutils.getFactory (). Opensession (); string Pernyataan = "com.web.mapper.userSer. Komit*/sesi. "com.web.mapper.usermapper.getUser";/*Kembalikan efek efek*/pengguna pengguna = session.selectone (pernyataan, 3); System.out.println ("Baris efek .."+pengguna);}@tes public void uji () {sqlesision sesi = mybatatisils.getFactory (). com.web.mapper.usermapper.updateUser ";/*Mengembalikan efek efek*/int update = session.update (pernyataan, pengguna baru (3," tom4 ", 13)); System.out.println (" Efek Baris .. "+Update);} uji public void testDelete () {SQLSESION SESION (). "com.web.mapper.usermapper.deleteUser";/*Kembalikan baris efek*/int delete = session.delete (pernyataan, 6);/*komit sendiri*/sesi. Mybatisutils.getFactory (). Opensession (); Pernyataan string = "com.web.mapper.usermapper.getUsers";/*Kembalikan daftar <user>*/daftar <user> user = session.selectlist (pernyataan); session.commit (); System.out.println ("efek efek .."+Sesi);ParameTerType dan resultType adalah hashmap:
<pilih id = "getUserFormap" parameTerType = "hashmap" resultType = "hashmap"> pilih * dari c_user di mana id =#{id}; </pilih> @Test public void getUserFormap () {sqlSession session = mybatisutils.getFactory (). Opensession (); string Pernyataan = "com.web.mapper.usermapper.getUserFormap"; hashmap <string, objek> peta = hashmap baru <string, objek> (); peta.pute ("" Object ("Id (" Id ("Id (" Id ("ID (" ID ("ID (" ID ("ID (" ID ("ID (" sesi. Efek baris .. {id = 1, usia = 12, name = luli}, kelas: kelas java.util.hashmapSingkatnya, dapat dilihat bahwa mybatis akan secara otomatis menguraikan dan merangkum sesuai dengan jenis parameter dan jenis hasil.
<Pilih id = "getListPage" parameTerType = "hashmap" resultMap = "siteextEnddaomap"> pilih id, site_id, site_name, situs_number, provinsi, kota, area, alamat, prefix internal, longitude = where or = "ifix =" di mana "ifix =" ort "orsite = orsite -where =" ortasi = " null dan checkState! = '' "> dan check_state = #{checkState, jdbctype = integer} </if> <if test =" siteId! = null dan siteId! = '' '"> dan Site_id like like ('%', #{null},'%') </if> <if test =" dan SITENOME! concat ('%', #{sitename}, '%') </if> <if test = "sitenumber! = null dan sitenumber! = ''"> dan situs_number like concat ('%', #{sitenumber}, '%') </if> <if test = "province! = null dan province! = ' #{Sitenumber}, '%') </if> <if test = "provinsi! = null dan provinsi! = '' '"> dan provinsi = #{provinsi} </if> <if test = "city! = null dan city! =' '' dan city = #{city} </if> <if test =" Area! =/null dan null dan city = #{city} </if> <if test = "Area! Area! --Add ortas <if test = "sortname! = Null dan sountname! = '' Dan sortorder! = Null dan sortorder! = Null dan sortorder! = ''"> Order dengan $ {sountname} $ {sortorder} </if> --add batas paging $ {(halaman-1)*pagesisasi}, $ {pageze {paging {page-1)Jika parameternya pojo, mybatis akan secara otomatis mendapatkan ID dari objek;
<hapus id = "hapus" parameTerType = "user"> hapus dari tb_user di mana id = #{id} </delete> <delete id = "deletebyid" parameTerType = "long"> hapus dari tb_user di mana id = #{id} </delete> <hapus id = "deletebyIds"> hapus dari tb_user di mana id in --use foreach <freeach collection = "list" item = "id" open = "(" puparator = "," close = ")"> #{id} </foreach> </delete>Biasanya digunakan bersama dengan getListPage.
<pilih id = "getRows" parameTerType = "hashmap" resultType = "long"> pilih count (*) dari tb_sys_role <if test = "keysysrole! = null"> <trim awalan = "where" ifoxoverrides = "dan | atau"> <if test = "Keysysrole.id! test = "keysysrole.name! = null dan keysysrole.name! = ''"> dan name = #{keysysrole.name} </if> <if test = "keysysrole.available! = null dan keysyrole.available! =" "> dan tersedia </KeysySrole.AveT {ifeMeMion {ifeMeMer>Di atas adalah semua konten artikel ini tentang mybatis menggunakan XML untuk analisis kode. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!