(1)对象作为参数执行插入
<insert id="insert" parameterType="Person">
insert ignore into tb_person_${tbIndex} (uid,name )
values(#{person.uid,jdbcType=INTEGER},#{person.name,jdbcType=VARCHAR})
</insert>
此时,如果表中有和属性对应的id字段,在插入动作返回后,会同时将自增主键写入id
(2)当不以对象作为parameterType时,可以添加keyProperty属性
<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id">
insert into person(uid,name) values(#{uid},#{name})
</insert>
(3)当不以对象作为parameterType时,使用selectKey取
<insert id="insert" parameterType="Person">
<selectKey keyProperty="id" resultType="int">
select LAST_INSERT_ID()
</selectKey>
insert into person(uid,name) values(#{uid},#{name})
</insert>
但方法(3)存在问题,在并发量大的时候,如果在程序和DB之间存在其他的中间件,导致selectKey和insert拿到的可能并不是同一个DBconnection,最终取得的id可能并不是本次执行插入操作的id
相关推荐
本教程“08_ibatis教程_sql主键生成方式”聚焦于Ibatis如何处理数据库主键的生成策略,这对于理解和优化数据库操作至关重要。 Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动...
这段配置表示在插入用户后,使用MySQL的`LAST_INSERT_ID()`函数获取自增主键的值,并将其赋给User对象的id属性。 通过学习“08_传智播客ibatis教程_sql主键生成方式”,开发者能够熟练掌握如何在Ibatis中配置和使用...
1. **手工指定主键**:这是最基础的方式,开发人员在插入数据时手动为新记录生成主键值。适用于主键是自增整数或由业务逻辑决定的情况。 2. **序列/序列化**:在Oracle等数据库中,可以创建序列来生成唯一的主键值...
对于MySQL等支持自增主键的数据库,`<selectKey>`通常配置在插入语句之后,用于获取新插入记录的自增主键。 5. **SQL输入参数(ParameterClass)**: 在SQL语句中,通过`parameterClass`属性指定输入参数的类型。...
- 自增主键:对于有自增主键的表,插入操作时通常不需要显式配置主键列。否则,你需要明确指定所有字段,包括主键。 - 获取主键:在插入操作后,可以通过`<selectKey>`标签来获取新生成的主键。例如,在Oracle或...
此外,`<selectKey>`标签用于在插入后获取自增主键的值,这对于某些数据库系统(如MySQL)是必要的。 总的来说,iBatis的批处理功能通过在代码和配置文件中灵活运用循环,使得开发者能够有效地处理大批量数据操作,...
对于MySQL这样的自增主键数据库,则可以在插入语句之后通过`LAST_INSERT_ID()`来获取新生成的主键值: ```xml SELECT LAST_INSERT_ID() insert into ... ``` #### 五、SQL参数传递 iBatis提供了多种方式...
而对于MySQL等支持自增主键的数据库,通常在插入语句后配置`<selectKey>`,如`SELECT LAST_INSERT_ID()`,以获取新插入行的主键。 **参数类(Parameter Class)**在iBatis中扮演着重要角色。插入语句的参数可以是类...
- `<insert>`:插入记录,使用`useGeneratedKeys`和`keyProperty`获取自增主键。 - `<update>`:更新记录。 - `<delete>`:删除记录。 4. **Mapper接口** - 为了方便Java代码的调用,可以创建一个对应的Mapper...
- **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...
例如,插入操作可以通过`<insert>`标签完成,其中的`parameterType`指定传入参数的类型,`useGeneratedKeys`和`keyProperty`用于获取自增主键的值。 ```xml INSERT INTO users (username, password) VALUES (#{...
对于需要自增主键的表,SQLMap支持通过`<id>`元素配置自动获取生成的主键。 #### 存储过程 除了标准的SQL语句,SQLMap还支持调用数据库存储过程。 #### ParameterClass和ParameterMap `ParameterClass`定义了传入...
- **<selectKey>`**:用于生成主键,在某些数据库中可能需要在插入记录前先获取自增主键值。 - **<insert>`**:定义插入操作,可以与`parameterMap`结合使用以支持复杂的参数传递。 - **<resultClass>`**:定义查询...
在MybatisPlus中,插入数据并获取对象的主键值是一个常见的需求,特别是在需要跟踪新插入记录的唯一标识时。MybatisPlus提供了一种简便的方式来实现这一功能。本篇文章将详细解释如何在MybatisPlus中实现这一操作,...
3. `<insert>`:定义了一个插入语句,包含ID、parameterMap、resultMap、statementType等属性,可能还包括useGeneratedKeys和keyProperty等用于处理自增主键的设置。 4. `<update>`:定义了一个更新语句,同样有ID、...
这样,在插入数据时,Mybatis-plus 将自动生成主键的值。 接下来,我们可以使用 `@TableField` 注解来指定自动注入时间: ```java @Data @AllArgsConstructor @NoArgsConstructor public class User { @TableId...
iBatis是一个简单易用的Java持久层框架,它允许开发者将SQL查询与Java代码分离,提供更灵活的数据库操作方式。在本项目中,iBatis可能被用来执行数据库查询和操作,如CRUD(创建、读取、更新、删除)操作。 1. **...
- **增加(Insert)**:使用`<insert>`标签定义插入操作,包括主键自增策略等。 - **删除(Delete)**:`<delete>`标签用于定义删除操作,可以基于特定条件执行。 - **更新(Update)**:`<update>`标签用于更新...