全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-20 8 分钟 ✍️ juanwangdev

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 标签,需控制批量大小

📝 发现内容有误?点击此处直接编辑

← 上一篇 delete 删除语句
下一篇 → mapper 根元素
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库