mybatis的插入语句
时间: 2025-06-14 11:02:57 浏览: 10
### MyBatis 插入语句示例与语法
在 MyBatis 中,插入操作通常通过 `<insert>` 元素来实现。此元素用于执行 SQL 的 `INSERT` 语句,并可以返回自动生成的主键。
#### 使用 XML 配置插入语句
下面是一个简单的例子,展示如何配置一个插入语句:
```xml
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO users (id, name, email)
VALUES (#{id}, #{name}, #{email})
</insert>
```
这段代码展示了向名为 `users` 的表中插入一条记录的操作[^2]。这里假设有一个 Java 类 `User`,其属性对应于数据库字段。MyBatis 将会把传入的对象转换成合适的 PreparedStatement 参数并安全地设置这些参数[^1]。
如果希望获取由数据库生成的新记录 ID,则可以在 `<insert>` 标签里加入额外的信息:
```xml
<insert id="insertUserWithGeneratedKey" parameterType="com.example.User"
useGeneratedKeys="true" keyProperty="id" keyColumn="id">
INSERT INTO users (name, email)
VALUES (#{name}, #{email})
</insert>
```
在这个版本中,设置了三个重要的属性:
- `useGeneratedKeys`: 表明应该使用 JDBC 的 getGeneratedKeys 方法来获得最后插入行的主键。
- `keyProperty`: 指定哪个属性接收新创建的主键值。
- `keyColumn`: 定义哪一列是主键所在的位置。
对于批量插入的情况,当传递 List 实例或数组作为参数时,MyBatis 自动将其封装在一个 Map 中处理,其中列表将以 “list” 键访问[^3]。因此,动态构建多条插入语句成为可能。
#### 动态 SQL 批量插入
为了支持一次性的多个数据项插入,可以通过循环遍历集合来进行批量插入:
```xml
<insert id="batchInsertUsers" parameterType="java.util.List">
INSERT INTO users (name, email)
VALUES
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.email})
</foreach>
</insert>
```
上述片段利用了 `<foreach>` 标签迭代输入列表中的每一个用户对象,并为每一项生成相应的值对。分隔符 `,` 确保各组之间有正确的逗号间隔。
阅读全文
相关推荐

















