`

ibatis插入时获取自增主键的方式

阅读更多

(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主键生成方式.rar

    本教程“08_ibatis教程_sql主键生成方式”聚焦于Ibatis如何处理数据库主键的生成策略,这对于理解和优化数据库操作至关重要。 Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动...

    08_传智播客ibatis教程_sql主键生成方式

    这段配置表示在插入用户后,使用MySQL的`LAST_INSERT_ID()`函数获取自增主键的值,并将其赋给User对象的id属性。 通过学习“08_传智播客ibatis教程_sql主键生成方式”,开发者能够熟练掌握如何在Ibatis中配置和使用...

    08_ibatis教程_sql主键生成方式.zip

    1. **手工指定主键**:这是最基础的方式,开发人员在插入数据时手动为新记录生成主键值。适用于主键是自增整数或由业务逻辑决定的情况。 2. **序列/序列化**:在Oracle等数据库中,可以创建序列来生成唯一的主键值...

    ibatis 中sqlMap配置

    对于MySQL等支持自增主键的数据库,`&lt;selectKey&gt;`通常配置在插入语句之后,用于获取新插入记录的自增主键。 5. **SQL输入参数(ParameterClass)**: 在SQL语句中,通过`parameterClass`属性指定输入参数的类型。...

    iBatis_SqlMap的配置总结[1]

    - 自增主键:对于有自增主键的表,插入操作时通常不需要显式配置主键列。否则,你需要明确指定所有字段,包括主键。 - 获取主键:在插入操作后,可以通过`&lt;selectKey&gt;`标签来获取新生成的主键。例如,在Oracle或...

    ibatis批处理

    此外,`&lt;selectKey&gt;`标签用于在插入后获取自增主键的值,这对于某些数据库系统(如MySQL)是必要的。 总的来说,iBatis的批处理功能通过在代码和配置文件中灵活运用循环,使得开发者能够有效地处理大批量数据操作,...

    ibatis_sqlMap的配置总结

    对于MySQL这样的自增主键数据库,则可以在插入语句之后通过`LAST_INSERT_ID()`来获取新生成的主键值: ```xml SELECT LAST_INSERT_ID() insert into ... ``` #### 五、SQL参数传递 iBatis提供了多种方式...

    ibaits配置总结[参考].pdf

    而对于MySQL等支持自增主键的数据库,通常在插入语句后配置`&lt;selectKey&gt;`,如`SELECT LAST_INSERT_ID()`,以获取新插入行的主键。 **参数类(Parameter Class)**在iBatis中扮演着重要角色。插入语句的参数可以是类...

    ibatis持久层简单操作

    - `&lt;insert&gt;`:插入记录,使用`useGeneratedKeys`和`keyProperty`获取自增主键。 - `&lt;update&gt;`:更新记录。 - `&lt;delete&gt;`:删除记录。 4. **Mapper接口** - 为了方便Java代码的调用,可以创建一个对应的Mapper...

    IBATISDAO库类操作

    - **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...

    ibatis常见案例

    例如,插入操作可以通过`&lt;insert&gt;`标签完成,其中的`parameterType`指定传入参数的类型,`useGeneratedKeys`和`keyProperty`用于获取自增主键的值。 ```xml INSERT INTO users (username, password) VALUES (#{...

    ibatis文档

    对于需要自增主键的表,SQLMap支持通过`&lt;id&gt;`元素配置自动获取生成的主键。 #### 存储过程 除了标准的SQL语句,SQLMap还支持调用数据库存储过程。 #### ParameterClass和ParameterMap `ParameterClass`定义了传入...

    ibatis环境搭建教程

    - **&lt;selectKey&gt;`**:用于生成主键,在某些数据库中可能需要在插入记录前先获取自增主键值。 - **&lt;insert&gt;`**:定义插入操作,可以与`parameterMap`结合使用以支持复杂的参数传递。 - **&lt;resultClass&gt;`**:定义查询...

    MybatisPlus中插入数据后获取该对象主键值的实现

    在MybatisPlus中,插入数据并获取对象的主键值是一个常见的需求,特别是在需要跟踪新插入记录的唯一标识时。MybatisPlus提供了一种简便的方式来实现这一功能。本篇文章将详细解释如何在MybatisPlus中实现这一操作,...

    ibatis的sql-map dtd

    3. `&lt;insert&gt;`:定义了一个插入语句,包含ID、parameterMap、resultMap、statementType等属性,可能还包括useGeneratedKeys和keyProperty等用于处理自增主键的设置。 4. `&lt;update&gt;`:定义了一个更新语句,同样有ID、...

    Mybatis-plus实现主键自增和自动注入时间的示例代码

    这样,在插入数据时,Mybatis-plus 将自动生成主键的值。 接下来,我们可以使用 `@TableField` 注解来指定自动注入时间: ```java @Data @AllArgsConstructor @NoArgsConstructor public class User { @TableId...

    ASP.NET MVC+iBatis+SQL

    iBatis是一个简单易用的Java持久层框架,它允许开发者将SQL查询与Java代码分离,提供更灵活的数据库操作方式。在本项目中,iBatis可能被用来执行数据库查询和操作,如CRUD(创建、读取、更新、删除)操作。 1. **...

    ibatis 增删改查(DB2版本)

    - **增加(Insert)**:使用`&lt;insert&gt;`标签定义插入操作,包括主键自增策略等。 - **删除(Delete)**:`&lt;delete&gt;`标签用于定义删除操作,可以基于特定条件执行。 - **更新(Update)**:`&lt;update&gt;`标签用于更新...

Global site tag (gtag.js) - Google Analytics