Mungkin banyak sepatu anak -anak tidak terlalu jelas bahwa di mybatis, berbagai bahasa skrip dapat digunakan untuk mendefinisikan SQL dinamis dalam file mapper; Saat ini, MyBatis mendukung bahasa skrip termasuk XML (default); Kecepatan dan Freemarker. Gunakan berbagai bahasa skrip untuk menyelesaikan penulisan file mapper. Yang pertama adalah menggunakan bahasa skrip yang Anda kenal, dan yang kedua adalah mendefinisikan instruksi khusus yang lebih banyak dan kaya untuk menyederhanakan pengembangan Mapper. Mengenai analisis prinsip skrip dukungan mybatis, dan kemudian tulis artikel untuk menganalisis instruksi skrip khusus. Artikel ini pertama kali memperkenalkan penggunaan skrip kecepatan di mybatis.
Proyek MyBatis-Velocity memungkinkan Anda menggunakan kecepatan dengan mudah sebagai bahasa skrip untuk menyelesaikan penulisan berbagai SQL dinamis dalam file mapper.
Perhatikan bahwa kecepatan digunakan secara luas dalam skrip. Jika Anda tidak terbiasa dengan itu, Anda pertama -tama dapat memeriksa skrip kecepatan;
Memasang
Tambahkan Maven
<dependency> <GroupId> org.mybatis.scripting </groupid> <ArTifactId> mybatis-velocity </artifactid> <version> 1.2 </version> </dependency>
Perhatikan bahwa kami menggunakan MyBatis-Velocity Versi 1.2, yang membutuhkan dukungan mybatis3.3;
Dalam file konfigurasi mybatis, atur mesin skrip kecepatan sebagai mesin file mapper default:
<yypealiases> ... <typealias type = "org.mybatis.scripting.velocity.driver" alias = "velocity"/> </yypeAliases> <Stripting> ... <setting name = "DefaultScriptinganguage" value = "velocity"/</pengaturan>
Konfigurasi selesai.
Selanjutnya, Anda dapat menggunakan skrip kecepatan dalam file mapper:
<pilih id = "findPerson" lang = "velocity"> #set ($ pola = $ _parameter.name + '%') Pilih * dari orang di mana nama seperti @{pola, jdbctype = varchar} </pilih>Melihat:
Jika kecepatan digunakan, parameter harus direferensikan menggunakan @{}, karena arahan kecepatan dimulai dengan #, seperti #set #if, dll.;
Menggunakan skrip kecepatan, Anda juga dapat mengonfigurasi javatype dan jdbctype yang sesuai di parameter; Format konfigurasi adalah: @{properti, attr1 = val1, attr2 = val2, ...}; Item yang dapat dikonfigurasi adalah javatype, jdbctype, mode, numericscale, resultMap, typeHandler, jdbctypeName;
Gunakan variabel dalam konteks dalam arahan kecepatan, dan gunakan $ _parameter sebagai referensi awalan, misalnya
#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') dan nama seperti @{_ name} #endPerintah built-in mybatis-velocity
Selain arahan kecepatan, proyek mybatis-velocity mendefinisikan beberapa arahan kecepatan bawaan untuk mybatis:
memangkas
#trim (awalan awalan uD suffix suffixoverrides) body #end
Arti parameter di dalamnya sama dengan makna parameter trim di XML;
Contoh:
#trim ("di mana" "dan | atau")#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') dan nama seperti @{_ name}#end#end#end Di mana
#where () body #end #where () sama dengan <where> di xml. Anda dapat mengganti dan/atau sebelum kondisi dan menggantinya dengan di mana; Perhatikan bahwa /di mana () memiliki tanda kurung;
mset
#mset () body #end #mset ditambahkan m sebelum itu, untuk membedakannya dari arahan #set kecepatan itu sendiri. #MSET setara dengan elemen <Set> di XML. Anda dapat menambahkan pernyataan set sebelum kondisi dan menghapus titik koma di blok set terakhir;
Contoh:
<Perbarui id = "Perbarui"> Perbarui pengguna #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) usia =@{usia}, #end #if ($ _ parameter.bornDate) bornDate =@{bornDate} #end #end where id =@@@@@@@ mengulang
#rePeat (koleksi pemisah var buka tutup) body #end #Repeat directive sama dengan elemen <freeach> dalam xml. Ini dapat dengan mudah melintasi elemen jenis koleksi/array dan menggunakan setiap elemen di dalamnya:
Contoh:
Pilih *dari City #where () #rePeat ($ _parameter.ids $ id "," "state_id in (" ")") @{id} end #end #end di dalam
#in (koleksi var field) body #end
Petunjuk #in adalah arahan baru yang dapat dengan cepat menghasilkan bidang yang sesuai () untuk dalam kondisi dalam SQL; Dalam daftar parameter, koleksi mewakili konten di dalam untuk dilalui; VaR mewakili nama referensi sementara dari setiap objek dalam traversal; Bidang mewakili nama bidang yang dihasilkan sebelum pernyataan In;
Contoh:
Pilih *dari kota #where () #in ($ _parameter.ids $ id "state_id") @{id} #end #endPerintah khusus
Mybatis-Velocity memungkinkan Anda untuk dengan mudah menyesuaikan instruksi Anda sendiri untuk menyederhanakan pengembangan. Langkah -langkah instruksi khusus adalah:
Tambahkan file konfigurasi mybatis-velocity.properties di classpath;
Buat kelas parsing arahan kecepatan Anda sendiri;
Tambahkan kelas parsing arahan kecepatan yang Anda buat sendiri ke file konfigurasi;
Gunakan arahan dalam file mapper.xml;
Contoh:
// Pengguna DirectivePackage com.myproject.directives; // Kelas Petunjuk Kustom perlu mewarisi kelas arahan; Kelas Publik MyDirective Extends Directive {} // mybatis-velocity.properties// Jika ada beberapa kelas arahan khusus, pisahkan dengan titik koma; userDirective = com.myproject.directives.mydirective; // mapper xml file select *dari city #mydirective () ...... #endPenggunaan komprehensif
Jika menggunakan velocity-mybatis, crud mapper khas bisa terlihat seperti ini:
<mapper namespace = "mybatis.com._520it.mybatis.usermapper"> <resultMap type = "user" id = "user_mapping"> <id kolom = "id" properti = "id"/> <hasil kolom = "name" properti "/<"/> <"era" era "usia" era "/<" name = "name"/<"name" properti = "bornDate"/> <RancesMap> <sisipkan id = "add" keycolumn = "id" keyProperty = "id" useGeneratedKeys = "true"> masukkan ke dalam nilai pengguna (nama, usia, bornDate) (@@{"name, javatype = string, jdbctype = varchar},@{@@@@@@@@@{@@@@@@@@@@@@@{@@@@@@@{@@@@@{@@@@@{@@@@{@@@@{@@{@@{@@{@@@{ #mset()#if($_parameter.name) name=@{name}, #end#if($_parameter.age) age=@{age}, #end#if($_parameter.bornDate) born=@{bornDate} #end#endWHERE id = @{id}</update><delete id="delete" parameterType="long">DELETE FROM USER WHERE id = @{ID} </delete> <sql id = "user_column"> id, name, use, bornDate </sql> <pilih id = "dapatkan" resultMap = "user_mapping"> Pilih <incerted refid = "user_column"/> dari user where id = @{id} </pilih <pilih id = " refid = "user_column"/> dari user </select> <pilih id = "listbyname" resultMap = "user_mapping" parameTerType = "string"> pilih <incert refid = "user_column"/> dari user where name = @{name} </pilih> <pilih id = "queryby" hancur = "User_mapping_mapping" namePROM " Pengguna#di mana ()#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') dan name like @{_ name}#end#end#if ($ _ parameter.orderby) memesan dengan @{orderby} @{ordeType}#end#if ($ _ paramer oleh @{{ @ @{{oMerType {oMerType @{owerType @{Parameter if. @{start}, @{pagesize} #end </select> </mapper>Di atas adalah penjelasan terperinci tentang tutorial penggunaan skrip kecepatan mybatis yang diperkenalkan kepada Anda oleh editor (disarankan). Saya harap ini 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!