1. 程式人生 > >mybatis插入多條資料,id自動為生成的uuid,傳入的資料格式為map的解決方式

mybatis插入多條資料,id自動為生成的uuid,傳入的資料格式為map的解決方式

擼程式碼遇到過這種情況:

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迴圈到的下標