mybatis insert 返回主键

分享牛,分享牛原创。ssm整合的时候,我们操作mybatis insert 的时候,需要返回插入的主键,因为主键是自增的,这个时候怎么办呢?很简单看一下下面的代码示例:

1.1.1. 代码定义

public interface IBaseService<M,QM extends BaseModel> {
public void create(M m);
public int createAndRetuenId(M m);
public void update(M m);
public void delete(int uuid);
public M getByUuid(int uuid);
public Page<M> getByConditionPage(QM qm);
}

1.1.2. xml定义

  <insert id="createAndRetuenId"  useGeneratedKeys="true" keyProperty="uuid" parameterType="com.shareniu.car.vo.CartModel">
     	insert into tbl_cart (customerUuid,goodsUuid,buyNum)
     	 values(#{customerUuid},#{goodsUuid},#{buyNum})
     </insert>

keyProperty 注意这里就是传入的对象中的属性,最终的返回主键的值封装在这个属性中。

1.1.3. java代码

CartModel m=new CartModel();
m.setBuyNum(5);
m.setGoodsUuid(2);
m.setCustomerUuid(3);
int createAndRetuenId = getiCartService.createAndRetuenId(m);
System.out.println(m.getUuid());

1.1.4. 注意

1.返回值int只是 标示sql是否执行成功。

2.keyProperty 返回的值才是真正的主键的值,直接从插入的对象中取值即可这里我们m.getUuid()。

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

时间: 2024-07-31 19:53:11

mybatis insert 返回主键的相关文章

MyBatis中insert操作返回主键的实现方法_java

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="

mybatis+mysql 一表主键自增, 插入数据,怎么返回主键

问题描述 mybatis+mysql 一表主键自增, 插入数据,怎么返回主键 mybatis+mysql 一表主键自增, 插入数据,怎么返回主键.很多人说的都是返回了插入的行数 解决方案 <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd)

mysql使用mybatis批量添加数据,返回主键

问题描述 mysql使用mybatis批量添加数据,返回主键 mysql使用mybatis批量添加,使用各种方法都无法返回对应的主键,请兄弟们不吝赐教 解决方案 该功能无法实现,只能分步骤来,先插入在查询 解决方案二: 批量添加还要返回主键??这个不太可能吧.最多也就返回插入的条数.如果返回主键,那不是了返回一个list然后里面放主键?一条一条插入倒是可以返回主键 解决方案三: 分步骤来,先插入在查询

java 后台获取mybatis自增主键

问题描述 java 后台获取mybatis自增主键 现在java后台执行insert操作想获取 mybatis里这条插入语句的自增主键 SELECT LAST_INSERT_ID() AS source_id insert into tenke_pick_resource (url path name size heightwidthformatstatus) values (#{urljdbcType=VARCHAR} #{pathjdbcType=VARCHAR} #{namejdbcTyp

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一.前言      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅.   二. insert元素 属性详解   其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置    keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元

MyBatis学习 之 六、insert操作返回主键

     数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅.   二. insert元素 属性详解   其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置    keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将

mybatis返回主键问题

问题描述 mybatis批量插入数据之后,怎么获取那些数据的主键 解决方案 解决方案二:其实返回的主键就是一个sequence,在你插入之前,它首先查询你的sequence的nextValue,然后返回给你,接着就是插入数据库变主键了~解决方案三:其实在配置文件中一个属性,不知道你注意过没有:keyProperty="iuserid"

sql语句返回主键SCOPE_IDENTITY()_MsSql

在sql语句后使用 SCOPE_IDENTITY() 当然您也可以使用 SELECT @@IDENTITY 但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确. 示例: 复制代码 代码如下: insert into dbo.SNS_BlogData(userName) values('jiangyun') ; SELECT SCOPE_IDENTITY() 获取SQL-SERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY 插入一条记录

MyBatis获取自增长主键值的两种方式及源码浅析

昨天在做项目的时候遇到了一个坑,没错,就是获取MyBatis自增长主键值的坑.因为之前一直用ibatis,所以惯性的用了ibatis的写法,结果返回的值一直是1(受影响的行数).于是去翻了翻MyBatis的源码,发现它把主键值放到了参数对象上,获取主键值需要用参数对象去get主键值.真是坑.我先把解决办法放出来,然后再接着分析MyBatis的源码是怎么做的. 环境: 数据库MySql.User表,主键设置为自增长. CREATE TABLE `user` ( `id` INT(11) NOT N