insert 插入语句
insert 用于插入数据,核心是掌握自增主键获取与批量插入。
基础插入
XML
<insert id="insert" parameterType="com.example.entity.User">
INSERT INTO user (username, email, create_time)
VALUES (#{username}, #{email}, #{createTime})
</insert>
Java 调用:
Java
int rows = mapper.insert(user);
// rows 为影响行数
获取自增主键
useGeneratedKeys 方式(推荐)
XML
<insert id="insert" parameterType="com.example.entity.User"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO user (username, email, create_time)
VALUES (#{username}, #{email}, #{createTime})
</insert>
Java
mapper.insert(user);
System.out.println("插入后的 ID: " + user.getId());
selectKey 方式
XML
<insert id="insert" parameterType="com.example.entity.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user (username, email, create_time)
VALUES (#{username}, #{email}, #{createTime})
</insert>
注意:
order="AFTER"表示插入后获取,适用于 MySQL;Oracle 使用order="BEFORE"。
批量插入
XML
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO user (username, email, create_time) VALUES
<foreach collection="list" item="user" separator=",">
(#{user.username}, #{user.email}, #{user.createTime})
</foreach>
</insert>
Java
List<User> users = Arrays.asList(user1, user2, user3);
int rows = mapper.batchInsert(users);
注意:批量插入需控制批量大小,避免单次插入过多数据导致内存溢出。
要点总结
- insert 返回影响行数,非主键值
- useGeneratedKeys + keyProperty 是获取自增主键推荐方式
- selectKey 适用于非自增主键场景(如 Oracle 序列)
- 批量插入使用 foreach 标签,需控制批量大小
📝 发现内容有误?点击此处直接编辑