【mybatis】mybatis中insert操作,返回自增id
需求是这样的:
mybatis中insert操作,返回自增id,因为这个自增id需要给后续业务用到。
原本是这样的:
将insert语句传入,正常执行insert操作,返回int永远是 0[失败] 或者 1[成功]
mapper.xml是这样的:
<insert id="insertMaster" parameterType="java.lang.String" >
${masterInsertSql}
</insert>
mapper.java是这样的:
int insertMaster(@Param("masterInsertSql") String masterInsertSql);
想要实现mybatis的insert操作返回自增id,需要这样:
1.首先,你需要一个Bean。
这个Bean对象作为参数传入,这个bean需要一个字段接收自增id
所以,我得创建一个对象:
public class WorksheetMasterSQLBean {
private Long id;
private String masterInsertSql;
这个对象就多了一个id,用来接收自增id。
把原本的参数,放在这个对象中。
2.我需要将这个对象作为入参传递给mybatis
所以,我的mapper.java这样写:
int insertMaster(WorksheetMasterSQLBean masterBean);
3.最后,我需要指定我传入的对象,哪个字段用来接收insert之后返回的自增id
所以,我的mapper.xml需要这样写:
<insert id="insertMaster" parameterType="com.lqjava.daywork.api.beans.WorksheetMasterSQLBean" useGeneratedKeys="true" keyProperty="id">
${masterInsertSql}
</insert>
添加属性:
useGeneratedKeys="true"
keyProperty="id" //指定bean中的id字段接收 自增主键
就可以拿到insert操作后的自增主键了
4.最终要的,在java中调用时候,怎么拿到自增主键?
错误拿取:
int i = tableDataMapper.insertMaster(masterSQL);
System.out.println("主键:"+i); //返回的依旧是 0 或者 1 ,代表执行成功或失败
正确拿取:
tableDataMapper.insertMaster(masterSQL);
System.out.println("主键:"+masterSQL.getId()); //因为上面说了,mybatis会把自增id封装在你的入参bean的指定字段中,所以应该从 入参.get(指定字段) 去获取
【mybatis】mybatis中insert操作,返回自增id的更多相关文章
- mybatis postgresql insert后返回自增id
在使用mybatis + postgresql,我们有时在插入数据时需要返回自增id的值,此时在插入时,可以按照以下例子来编写mapper文件 <insert id="insertUs ...
- Mybatis insert时返回自增id
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 详细看这里:http://www.cnblogs.com/SimonHu1 ...
- MyBatis返回主键,MyBatis Insert操作返回主键
MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...
- MyBatis学习 之 六、insert操作返回主键
数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ,入参的全 ...
- IBatisNet:让insert操作返回新增记录的主键值
项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...
- mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...
- mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...
- MyBatis insert后返回自增字段的值
如下情况适用支持自增的DB,如MySQL.其他情况参见:MyBatis魔法堂:Insert操作详解(返回主键.批量插入) 1.model public class UserInfo { private ...
- 【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】
主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TSt ...
随机推荐
- 利用PowerDesigner逆向工程导出PDM模型及生成文档
原文:利用PowerDesigner逆向工程导出PDM模型及生成文档 最近需要对老项目进行重构优化,由于项目都是好几年前的,相关设计资料很不全,最基本的数据库设计文档都没有,只能利用PowerDesi ...
- HDU 5238 Calculator 线段树 中国剩余定理
题意: 给一个计算器,有一系列计算步骤,只有加,乘,幂三种运算. 有一种查询操作:查询初始值为\(x\)的时候,最终运算结果模\(29393\)的值. 有一种修改操作:可以修改第\(p\)个运算的运算 ...
- HDU 4871 Shortest-path tree 最短路 + 树分治
题意: 输入一个带权的无向连通图 定义以顶点\(u\)为根的最短路生成树为: 树上任何点\(v\)到\(u\)的距离都是原图最短的,如果有多条最短路,取字典序最小的那条. 然后询问生成树上恰好包含\( ...
- luogu3371 【模板】单源最短路径 dijkstra堆优化
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> ...
- oracle 多表连接查询
一.内连接(inner join (可简写为join)) 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值. 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的 ...
- day01_14.遍历数组
<?php $a = array('a','b','c'); print_r($a); ?> 输出结果:Array ( [0] => a [1] => b [2] => ...
- golang语法要点笔记
golang学习笔记 读<go学习笔记第四版> <学习go语言> <gopl-zh><Go语言实战>记录 多变量赋值时,先计算所有相关值,然后再从左到右 ...
- hdu6035[dfs+思维] 2017多校1
/*hdu6035[dfs+思维] 2017多校1*/ //合并色块, 妙啊妙啊 #include<bits/stdc++.h> using namespace std; ; const ...
- 【Luogu】P3746组合数问题(矩阵)
题目链接 哇我一个活人的智商被题目碾压了 可以把问题转化为有nk个物品,问拿i件物品的方案数有多少种,其中i%k=r. 然后矩阵乘法加速DP即可. #include<cstdio> #in ...
- 如何在c#代码中执行带GO语句的SQL文件
需要在C#代码中执行一个SQL文件的内容.遇到了两个问题: 1. 因为SQL文件中有"GO"语句,执行时报错"Incorrect syntax near 'GO'.& ...