您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)mybatis中怎么實(shí)現(xiàn)動態(tài)插入,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
項(xiàng)目結(jié)構(gòu)如下:
驗(yàn)證過程就不細(xì)說了,直接貼個(gè)驗(yàn)證成功的
service:
這里面的表名bc_role應(yīng)該通過對方傳過來(對方傳的是我們自定義的一個(gè)type,然后在第一張表中,把這個(gè)type和表名做一個(gè)映射,這樣不暴露真實(shí)的表名),拿到表名之后,再根據(jù)表名上第二個(gè)配置表中獲取都需要哪些字段要保存,如果獲取不到則是全部字段。邏輯是這個(gè)邏輯,我這主要是驗(yàn)證mybatis的動態(tài)插入驗(yàn)證,就把非關(guān)鍵部分寫死了。代碼如下,注意data中是即有value需要的參數(shù)也有整個(gè)sql,sql本身自己也是個(gè)參數(shù),然后他里面又用#{}去引用別的參數(shù)。
public void dynamicInsert3() { Map<String,Object> data = new HashMap<>(); data.put("ID",java.util.UUID.randomUUID().toString()); data.put("CREATE_TIME",new Date()); data.put("CREATOR","張三"); data.put("DESCRIPTION","備注dynamicInsert3"); data.put("IS_DELETE",1); data.put("NAME","角色名稱"); data.put("STATUS",1); data.put("sql","insert into bc_role(ID,CREATE_TIME,CREATOR,DESCRIPTION,IS_DELETE,NAME,STATUS) values(#{ID},#{CREATE_TIME},#{CREATOR},#{DESCRIPTION},#{IS_DELETE},#{NAME},#{STATUS})"); testMapper.dynamicInsert3(data); }
mapper.xml
<insert id="dynamicInsert3" parameterType="java.util.Map"> ${sql} </insert>
最后執(zhí)行測試
@Test void dynamicInsert3() { testService.dynamicInsert3(); }
結(jié)果如下,輸出的sql使用的是?,說明進(jìn)行了預(yù)編譯:
Preparing: insert into bc_role(ID,CREATE_TIME,CREATOR,DESCRIPTION,IS_DELETE,NAME,STATUS) values(?,?,?,?,?,?,?) Parameters: 91094ee2-c524-469b-aece-acc316431df0(String), 2021-04-15 16:02:49.218(Timestamp), 張三(String), 備注dynamicInsert3(String), 1(Integer), 角色名稱(String), 1(Integer)
上述就是小編為大家分享的mybatis中怎么實(shí)現(xiàn)動態(tài)插入了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。