نظرًا لتلبية احتياجات العمل المختلفة في المشروع ، نحتاج أحيانًا إلى تشغيل جداول البيانات ديناميكيًا (مثل بناء الجدول الديناميكي ، وحقول جدول التشغيل ، وما إلى ذلك). عادةً ما نقوم بتخزين السجلات ، ومعلومات الموقع في الوقت الفعلي ، وما إلى ذلك ، في جدول البيانات ، وننشئ جدولًا للتخزين في فترة زمنية معينة ، سيتم استخدام SQL الديناميكي ، وسيتم استخدام SQL الديناميكي.
Dynamic SQL هي واحدة من الميزات القوية لـ MyBatis. قبل تجميع عبارات SQL ، ستقوم MyBatis بتحليل SQL بشكل ديناميكي وتحليلها في كائن BODEDSQL ، والذي يستخدم أيضًا لمعالجة SQL الديناميكي هنا.
في تحليل SQL الديناميكي ، تختلف تأثيرات #{} و $ {}:
#{} تم تحليلها في علامة معلمة لبيان JDBC مسبق.
مثل بيان SQL التالي:
حدد * من المستخدم حيث name = #{name} ؛ سيتم تحليلها على النحو التالي:
حدد * من المستخدم أين الاسم =؟ ؛
هل يمكنك رؤية #{} يتم تحليلها في عنصر نائب للمعلمة؟ .
$ {} هو مجرد استبدال السلسلة الخالصة ، وسيتم إجراء استبدال متغير خلال مرحلة تحليل SQL الديناميكية.
مثل بيان SQL التالي:
حدد * من المستخدم حيث name = $ {name} ؛ عندما نمر المعلمة "Joanna" ، ستقوم SQL بتحليل ما يلي:
حدد * من المستخدم حيث name = "Joanna" ؛
يمكنك أن ترى أن عبارة SQL قبل precompilation لم تعد تحتوي على اسم متغير.
لتلخيص ، تكون مرحلة الاستبدال للمتغير $ {} في مرحلة تحليل SQL الديناميكية ، في حين أن استبدال متغير #{} في DBMS.
ما يلي ينفذ الإنشاء الديناميكي لجدول MyBatis ، ويحدد ما إذا كان الجدول موجودًا ويحذف وظيفة الجدول.
mapper.xml
<؟ Namespace = "xx.xxx.xx.mapper.operatetablemapper"> <select id = "quiptable" parametertype = "string" resultType = "Integer"> select count (*) from information_schema.tables where lace (table_name) =#{tablename} </select> </uptuday> <update id = "createNewTable" parametertype = "string"> إنشاء جدول $ {tablename} (id bigint (20) لا null auto_increment ، entityid bigint (20) null ، dx double not null ، dy doube null ، dz double not NULL ، DIECTION FLOAT DEFAULT NULL ، السمات VARCHAR (255) الافتراضي ، المفتاح الأساسي (معرف)) </update> <insert id = "insert" parametertype = "xx.xxx.xx.po.trackpoint" ( #{trackpoint.entityid} ، #{trackpoint.dx} ، #{trackpoint.dy} ، #{trackpoint.dz} ، #{trackpoint.ntype} ، #{trackpoint.gnsstime} ، #{trackpoint.speed} ، #{trackpoint.direction} ، #{{{mapper.java
Package XX.XXX.XX.Mapper ؛
استيراد org.apache.ibatis.annotations.param ؛ import xx.xxx.xx.po.trackpoint ؛ الواجهة العامة operatableMapper {int quattable (سلسلة tablename) ؛ int droptable (param ("tableName") سلسلة tablename) ؛ int createNewTable (param ("tableName") سلسلة tablename) ؛ int insert (param ("tableName") String tablename ،@param ("trackpoint") trackpoint point) ؛}لخص
ما سبق هو مثال رمز جدول إنشاء MyBatis الديناميكي الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!