`

mybatis 插入时返回刚插入记录的主键值

阅读更多
<insert id="insert" parameterType="cn.***.beans.LogObject" >
	<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">
		SELECT LOGS_SEQ.nextval AS ID FROM DUAL
	</selectKey>
	INSERT INTO S_T_LOGS (
		ID, 
		USER_ID, 
		USER_NAME, 
		USER_IP, 
		OPERATION_TIME,
 		DESCRIPTION, 
		RESOURCE_ID) 
	VALUES (
		#{id}, 
		#{userId}, 
		#{userName}, 
		#{userIp}, 
		#{operationTime},
 		#{description}, 
		#{resourceId})
</insert>

   

orcale中。传进来的参数LogObject对象里的id字段就会被赋值成sequence的值。这样就达到返回刚插入记录的主键值的效果。

 

 

<insert id="insert" parameterType="cn.***.beans.LogObject" >
	<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
		  SELECT LAST_INSERT_ID() AS ID  
	</selectKey>
	INSERT INTO S_T_LOGS (
		ID, 
		USER_ID, 
		USER_NAME, 
		USER_IP, 
		OPERATION_TIME,
 		DESCRIPTION, 
		RESOURCE_ID) 
	VALUES (
		#{id}, 
		#{userId}, 
		#{userName}, 
		#{userIp}, 
		#{operationTime},
 		#{description}, 
		#{resourceId})
</insert>

 

 

mysql中。通过LAST_INSERT_ID() 获得刚插入的自动增长的id的值。

注意:selectKey中order属性的值是不同的,BEFORE先选择主键,设置keyProperty的值然后执行插入语句。

         AFTER是先执行插入语句,然后执行selectKey。

 

分享到:
评论
3 楼 bglmmz 2014-06-26  
zhangmingming_zmm001 写道
我改成这个样子了,为什么返回的值还是1呢。。。不是数据库主键自增的值啊~



你获取这个ID的方法出错了,ibatis中的insert返回的就是PK,但是mybaits的insert返回的是受影响的记录行数,要得到ID,需要用insert(Object obj)的参数得到,如obj.getId()
2 楼 530247683 2012-06-26  
zhangmingming_zmm001 写道
我改成这个样子了,为什么返回的值还是1呢。。。不是数据库主键自增的值啊~

你是传入的那个对象的id的值变化了。不是insert的返回值,insert的返回值成功就是1
1 楼 zhangmingming_zmm001 2012-06-25  
我改成这个样子了,为什么返回的值还是1呢。。。不是数据库主键自增的值啊~

相关推荐

    mybatis返回插入的id1

    在 MyBatis 框架中,当我们执行一个插入(insert)操作时,有时需要获取新插入记录的自增主键值,例如数据库中的唯一标识 ID。MyBatis 提供了方便的功能来实现这一需求,这主要涉及到 `keyProperty` 和 `...

    MybatisPlus中插入数据获取主键值示例代码

    当主键类型为整型并且设置了自增属性时,MybatisPlus会在插入数据后自动返回主键值。有两种方式可以获取这个值: 1. 使用`@TableId`注解:在实体类中,你可以通过在主键字段上添加`@TableId`注解来声明主键,并指定...

    MyBatis插入数据返回主键的介绍

    MyBatis插入数据返回主键的介绍 MyBatis是一个流行的持久层框架,它提供了许多实用的功能,包括插入数据返回主键的功能。在本文中,我们将详细介绍MyBatis插入数据返回主键的实现方法。 Service层实现 在Service...

    MyBatis+MySQL 返回插入的主键ID的方法

    在MySQL数据库中,自增主键通常用于标识每条记录的独特性,而在插入新记录后,数据库会自动为这条记录分配一个唯一的主键值。MyBatis提供了方便的方法来获取这个插入后的主键ID,下面我们将详细讲解如何实现这一功能...

    Mybatis实现插入数据后返回主键过程解析

    Mybatis实现插入数据后返回主键过程解析 Mybatis是一个基于Java的持久层框架,它提供了一个灵活的方式来访问和操作...MyBatis提供了多种方式来实现插入数据后返回主键值,开发者可以根据实际需求选择合适的方法。

    详解Java MyBatis 插入数据库返回主键

    **关于MyBatis插入数据的常见问题** 在实现插入数据并返回主键时,可能会遇到这样一个陷阱:在自定义插入方法时,如果错误地返回了SqlSession的自增ID,而不是正确地通过实体类传递,可能会导致看似插入成功但实际...

    Mybatis返回插入主键id的方法

    在Mybatis中,当执行插入操作时,有时我们需要获取新插入记录的主键ID,以便进行后续的操作。Mybatis提供了一种便捷的方式,允许我们在插入数据后返回自动生成的主键值。以下将详细介绍如何在Mybatis中实现这一功能...

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

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

    mybatis 获取mysql插入记录的自增长字段值.pdf

    `useGeneratedKeys="true"`指示MyBatis使用数据库生成的主键值。这通常适用于那些设置为自动增长的字段,比如MySQL中的`AUTO_INCREMENT`字段。在执行插入操作后,MyBatis会自动获取并设置到对应Java对象的属性中。 ...

    mybatis自增主键文档

    这样MySQL会在插入数据时自动分配并设置主键值,但同样不会将这个值返回给插入的对象。 3. **插入后获取自增主键值** 如果需要在插入数据后获取自增的主键值,MyBatis提供了`&lt;selectKey&gt;`元素来实现这一功能。这...

    mybatis-3.3.1.jar

    在批量插入时,MyBatis 3.3.1能够根据数据库的返回值(通常是受影响的行数或生成的ID)来获取这些主键值,并将它们映射回Java对象,以便于后续的业务逻辑处理。 为了实现这个功能,开发者需要在Mapper接口的方法上...

    详解MyBatis批量插入数据Mapper配置文件的写法

    `order="AFTER"` 表示在执行完插入操作后获取主键值,如果数据库不支持自增主键,可以改为`order="BEFORE"`,让MyBatis生成一个唯一的ID。 ```xml SELECT LAST_INSERT_ID() ``` 接下来是实际的插入语句,使用`...

    详解mybatis plus使用insert没有返回主键的处理

    总结来说,当使用 MyBatis Plus 插入数据时遇到主键未返回的问题,应检查以下几点: 1. 确保实体类中的主键字段已正确标注为自增类型。 2. 确认 Dao 接口只使用 MP 提供的通用方法,避免自定义与 MP 冲突的方法。 3....

    支持主键自增的数据库获取主键值.zip

    在对应的Java代码中,当你调用`sqlSession.insert("insertUser", user)`方法插入一条记录后,`user.getId()`就会返回数据库自动生成的主键值。这是因为MyBatis通过`useGeneratedKeys`和`keyProperty`属性与数据库...

    mybatis3.3x.rar

    这意味着在执行多条插入语句时,MyBatis可以一次性处理,并且能够返回所有新生成的主键值,这对于数据批量处理场景非常实用。 3.4.0版本的发布带来了更多优化和新功能,例如: - 支持Java 8的新特性,如日期时间...

    mybatis insert返回主键代码实例

    在使用 MyBatis 进行数据插入时,需要使用 `selectKey` 元素来获取插入后的主键值。`selectKey` 元素可以在插入语句之前或之后执行,具体的实现方法取决于所使用的数据库系统。 对于 Oracle 数据库,使用 `select...

    MyBatis-Plus 查询返回实体对象还是map

    在选择MyBatis-Plus查询返回类型时,应根据实际需求权衡。对于简单的单表查询,返回实体对象通常更合适,因为它提供了更好的代码可读性和自动映射功能。而对于复杂查询,如多表联合查询或需要特定字段组合的情况,...

    Mybatis笔记.docx

    在处理数据插入时,如果数据库(如MySQL)支持自动生成主键,MyBatis提供了自动获取新插入数据主键值的功能。例如,使用`useGeneratedKeys="true"`和`keyProperty="id"`属性,可以获取到插入后生成的主键值。 对于...

    MyBatisDemo

    3. ****:定义插入数据的 SQL 语句,可以返回自动生成的主键值。 4. ****:定义更新数据的 SQL 语句。 5. ****:定义删除数据的 SQL 语句。 【MyBatis注解】 除了 XML 映射文件,MyBatis 也支持在实体类和 DAO ...

    利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    总结起来,通过在MyBatis的Mapper XML文件中配置`useGeneratedKeys`和`keyProperty`,或者使用`&lt;selectKey&gt;`标签,我们可以轻松地在Java应用中获取MySQL插入记录时自动生成的主键值。这种方式不仅简化了编程,也提高...

Global site tag (gtag.js) - Google Analytics