Karena kebutuhan bisnis yang berbeda dalam proyek, kadang -kadang kita perlu mengoperasikan tabel data secara dinamis (seperti pembangunan tabel dinamis, bidang tabel operasi, dll.). Umumnya, kami akan menyimpan log, perangkat informasi lokasi waktu nyata, dll. Ke dalam tabel data, dan menghasilkan tabel untuk penyimpanan dalam periode waktu tertentu, log_201806, log_201807, dll. Di sini kami menggunakan MyBatis untuk mengimplementasikannya, dan SQL dinamis akan digunakan.
Dynamic SQL adalah salah satu fitur kuat mybatis. Sebelum membuat sebelumnya pernyataan SQL, mybatis akan secara dinamis mengurai SQL dan menguraikannya menjadi objek BoundSQL, yang juga digunakan untuk memproses SQL dinamis di sini.
Dalam parsing SQL dinamis, efek dari #{} dan $ {} berbeda:
#{} diuraikan ke dalam penanda parameter untuk pernyataan JDBC yang dikompilasi.
Seperti pernyataan SQL berikut:
pilih * dari pengguna where name = #{name}; Akan diuraikan sebagai:
Pilih * dari pengguna where name = ?;
Bisakah Anda melihat #{} diuraikan ke dalam placeholder parameter? .
$ {} hanyalah penggantian string murni, penggantian variabel akan dilakukan selama tahap parsing SQL dinamis.
Seperti pernyataan SQL berikut:
pilih * dari pengguna where name = $ {name}; Ketika kita melewati parameter "Joanna", SQL akan mengurai sebagai:
pilih * dari pengguna where name = "joanna";
Anda dapat melihat bahwa pernyataan SQL sebelum prekompilasi tidak lagi berisi nama variabel.
Singkatnya, tahap penggantian variabel $ {} ada dalam tahap parsing SQL dinamis, sedangkan penggantian variabel #{} ada di DBMS.
Berikut ini mengimplementasikan penciptaan dinamis tabel mybatis, menentukan apakah tabel ada dan menghapus fungsi tabel.
Mapper.xml
<? 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"> namespace = "xx.xxx.xx.mapper.operatetableMapper"> <pilih id = "extrictable" parameTerType = "string" resultType = "integer"> count (*) dari informasi_schema.tables di mana lcase (table_name) =#{tableName} </selecter </selecton id = " <update id = "createNeWtable" parameTerType = "string"> buat tabel $ {tableName} (id bigint (20) bukan null auto_increment, entityid bigint (20) bukan null, dx double not null, dy double not null, dz double not null, ntype varchar (32) not nol, gnlault null null, dz double not null, ntype varchar (32 not not not null, gnule null null nol not non nol, ntype varchar (32 tidak null, gnule null null null not not nol, ntype varchar (32) not not null, gnuld NULL, attributes varchar(255) DEFAULT NULL, PRIMARY KEY (id)) </update> <insert id="insert" parameterType="xx.xxx.xx.po.Trackpoint"> insert into ${tableName} (entityId,dx,dy,dz,ntype,gnssTime,speed,direction,attributes) values (#{trackpoint.entityid}, #{trackpoint.dx}, #{trackpoint.dy}, #{trackpoint.dz}, #{trackpoint.ntype}, #{trackpoint.gnsStime}, #{trackpoint.speed}, #{trackpoint.direction}, #{{trackpoint.attribute}).Mapper.java
paket xx.xxx.xx.mapper;
Impor org.apache.ibatis.annotations.param; impor xx.xxx.xx.po.trackpoint; Antarmuka Publik OperatetableMapper {int Extricable (string tableName); int droptable (@param ("tableName") string tableName); int createNewtable (@param ("tableName") string tableName); int insert (@param ("tableName") string tableName,@param ("trackpoint") trackpoint trackpoint);}Meringkaskan
Di atas adalah contoh kode tabel pembuatan dinamis MyBatis yang diperkenalkan kepada Anda oleh editor. 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!