【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 ...
随机推荐
- Http协议——基本概念
一.浏览网页的过程 用户输入一个url,浏览器根据url给web服务器发送一个Request,web服务器接收到Request后进行处理,并返回浏览器一个Response,可以响应一个静态页面或者图片 ...
- BZOJ 5215: [Lydsy2017省队十连测]商店购物
裸题 注意+特判 #include<cstdio> using namespace std; const int mod=1e9+7; int F[1000005],mi[10000005 ...
- selenium - 弹出框操作
# 6. 弹出框操作 # 6.1 页面弹出框操作# 页面弹出框 是一个html页面的元素,由用户在页面的操作触发弹出# (1)执行触发操作之后,等待弹出框出现之后,# (2)再定位弹出框中的元素并操作 ...
- Linux 安装 tree命令
通过yum在线安装tree包 yum install tree -y
- day03_11 if语句实现猜年龄01
老男孩猜年龄游戏 age_of_princal = 56 guess_age = int( input(">>:") ) #以下为伪代码 ''' if guess_ag ...
- Python学习-day9 线程
这节内容主要是关于线程的学习 首先要了解的什么是进程,什么是线程 进程与线程 什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称 ...
- JAVA-两种后台页面跳转方式
1.请求转发 RequestDispatcher rd = request.getRequestDispatcher("url"); rd.forward(request, res ...
- PHP7异常处理
try { // Code that may throw an Exception or Error. }catch (Exception $e) { } catch (Error $t) { } p ...
- scikit-learn使用方法
1.支持向量机 #_*_ coding:utf-8 _*_ from sklearn import datasets from sklearn import svm #装载内部测试数据集 digits ...
- BZOJ-1085 骑士精神
估价函数其实就是与目标状态有几个不同... 迭代启发搜索. #include <cstdlib> #include <cstdio> #include <cstring& ...