mybatis插入多條資料,id自動為生成的uuid,傳入的資料格式為map的解決方式
阿新 • • 發佈:2019-01-03
擼程式碼遇到過這種情況:
insert into user(id,user_name,user_age) values
(自動生成的uuid,"張三",18), (自動生成的uuid,"李四",19), (自動生成的uuid,"王五",20), (自動生成的uuid,"馮六",21)
使用 mybatis 該怎樣實現呢?
首先 select replace(uuid(),'-','') from dual 這樣 id 就為自動生成的uuid
由於欄位 id 自動生成的,傳入的時候可以不考慮.可以將傳入的多個 user_name,user_age 的值封裝成一個Map,既
{"張三":"18, "李四":"19", "王五":"20", "馮六":"21"}
後從 Controller 層傳入
對映類中
public interface User {
int insert(@Param("mymap") Map<String, String> map);
}
一定要加註解 @Param,裡面的值既為 xml 檔案中的
<foreach collection="mymap">內容
xml檔案中
<insert id="insert"> insert into user(id,use_name,user_phone) values <foreach collection="map" item="item" separator="," index="key"> ((select replace(uuid(), '-', '') as id from dual), #{key,jdbcType=VARCHAR}, #{item,jdbcType=VARCHAR}) </foreach> </insert> index="key"就是傳遞過來的 mymap 中的 key item="item"就是其中的 value 當傳值為 list 時,index 代指foreach迴圈到的下標