文章目錄
- 前言
- 1.單條數據插入表:
- 1.1mapper代碼:
- 1.2單元測試:
- 2.多條數據插入表:
- 2.1方法1:
- 2.2方法2:
- 2.3單元測試:
- 1.單條數據插入表:
- 結尾
前言
Mybatis批量插入返回自增ID這在很多場景下會用到,比方說請求過來以後返回結果後的回更用自增id處理,或者主表產生id後去做其他的子表的業務關聯。
1.單條數據插入表:
1.1mapper代碼:
重點是配置:
useGeneratedKeys=「true」 keyProperty=「id」
<insert id="insertSelective" parameterType="com.gaosi.user.gaosiuserjack.modle.UserLocal" useGeneratedKeys="true" keyProperty="id" >
insert into tb_user_local
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="age != null">
age,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
1.2單元測試:
@Test
public void insert1(){
UserLocal userLocal=new UserLocal();
userLocal.setName("單個姓名");
int result=userLocalMapper.insertSelective(userLocal);
System.out.println(userLocal);
}
2.多條數據插入表:
2.1方法1:
<insert id="insertBatch2" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into tb_user_local (name,create_time)
<foreach collection="list" item="item" index="index" separator="union all">
SELECT
#{item.name},
now()
FROM DUAL
</foreach>
</insert>
2.2方法2:
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
INSERT INTO
tb_user_local (name,create_time)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.name},now())
</foreach>
</insert>
2.3單元測試:
@Test
public void insertBatch(){
List<UserLocal>list=new ArrayList<>();
for (int i=0;i<3;i++){
UserLocal userLocal=new UserLocal();
userLocal.setName(i+"姓名");
list.add(userLocal);
}
int result=userLocalMapper.insertBatch2(list);
System.out.println(list);
}
結尾
這其中需要注意的就是mybatis的版本必須是3.3x以上的版本,不能使用ON DUPLICATE KEY UPDATE等語法,如果使用的話,多條的數據只會返回第一條的數據自增id。這就是我使用mybatis批量插入後的總結,非常的實用,希望能幫助到大家。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/252972.html