您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關mybatis中怎么實現動態插入,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
項目結構如下:
驗證過程就不細說了,直接貼個驗證成功的
service:
這里面的表名bc_role應該通過對方傳過來(對方傳的是我們自定義的一個type,然后在第一張表中,把這個type和表名做一個映射,這樣不暴露真實的表名),拿到表名之后,再根據表名上第二個配置表中獲取都需要哪些字段要保存,如果獲取不到則是全部字段。邏輯是這個邏輯,我這主要是驗證mybatis的動態插入驗證,就把非關鍵部分寫死了。代碼如下,注意data中是即有value需要的參數也有整個sql,sql本身自己也是個參數,然后他里面又用#{}去引用別的參數。
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>
最后執行測試
@Test void dynamicInsert3() { testService.dynamicInsert3(); }
結果如下,輸出的sql使用的是?,說明進行了預編譯:
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中怎么實現動態插入了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。