mybatis 新增返回id
第一种方式:
在实体类的映射文件 "*Mapper.xml" 这样写:
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">
insert into user(userName,password,comment)
values(#{userName},#{password},#{comment})
</insert>
Tips:
useGeneratedKeys="true" 表示给主键设置自增长keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段。parameterType="com.chenzhou.mybatis.User" 这个属性指向传递的参数实体类 这里提醒下,<insert></insert> 中没有resultType属性,不要乱加。实体类中uerId 要有getter() and setter(); 方法
由于我在MySQL数据库中建表时候已经设置了字段自增长,
第二种方式:
同样在实体类的映射文件 "*Mapper.xml" 但是要这样写:
<!-- 插入一个商品 -->
<insert id="insertProduct" parameterType="domain.model.ProductBean" >
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="productId">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO t_product(productName,productDesrcible,merchantId)values(#{productName},#{productDesrcible},#{merchantId});
</insert>
Tips:
<insert></insert> 中没有resultType属性,但是<selectKey></selectKey> 标签是有的。 order="AFTER" 表示先执行插入语句,之后再执行查询语句。 可被设置为 BEFORE 或 AFTER。 如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。 如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用keyProperty="userId" 表示将自增长后的Id赋值给实体类中的userId字段。SELECT LAST_INSERT_ID() 表示MySQL语法中查询出刚刚插入的记录自增长Id. 实体类中uerId 要有getter() and setter(); 方法
调用:
UserAccount userAccount1 = new UserAccount();
userAccount1.setAccountname("test2");
userAccount1.setPassword("test2");
userAccount1.setRegistos("IOS");
userAccount1.setStutas(0);
userAccount1.setCreatetime(System.currentTimeMillis());
userAccount1.setImei("test");
userAccount1.setChannel("test");
userAccount1.setRegistip("0.0.0.0");
int i = userAccountMapper.insertSelective(userAccount1);
System.out.println(userAccount1.getAccountid());
mybatis 新增返回id的更多相关文章
- Mybatis新增返回主键的两种方法 (mysql)
1.自增:LAST_INSERT_ID (自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值.) <!-- mysql的自增ID :LAS ...
- (转)MyBatis+MySQL 返回插入的主键ID
MyBatis+MySQL 返回插入的主键ID 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如 ...
- Mybatis添加用户&&Mybatis添加用户返回ID
(1)添加用户(添加User记录) <!--插入用户 --> <insert id="insertUser" parameterType="com.so ...
- mybatis中返回自动生成的id
当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢. 在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值: ...
- Mybatis自增长id处理
目录 1.使用useGenerateKey 2.使用select LAST_INSERT_ID() 3.使用select @@IDENTITY 4.在MySql中模拟Sequence 参考: 1.使用 ...
- PHP获取MySql新增记录ID值的方法
今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...
- MyBatis insert返回主键(sqlserver2008)
mybatis insert返回主键(sqlserver2008) MyBatisXML配置,下面两种方式都行 方式1: <insert id="insert" para ...
- MyBatis的返回参数类型和查询结果遍历
MyBatis的返回参数类型分两种 1. 对应的分类为: 1.1.resultMap: 1.2.resultType: 2 .对应返回值类型: 2.1.resultMap:结果集 2.2.result ...
- PHP获取MySql新增记录ID值的3种方法
From: http://www.jb51.net/article/51473.htm 这篇文章主要介绍了PHP获取MySql新增记录ID值的3种方法,一般使用PHP自带函数mysql_insert_ ...
随机推荐
- curl发送多维数组
//通过curl模拟post的请求: function SendDataByCurl($url,$data=array()){ //对空格进行转义 $url = str_replace(' ','+' ...
- Caused by: java.lang.NumberFormatException: For input string: " 60"
原因 原原因:string转int 格式出错 解决:我的输入文件格式在根据“,”分割完之后多出了一个空格,我想要的是“60” 但是分割完之后是“ 60”所以导致格式转换不匹配.
- 理解分布式一致性:Paxos协议之Basic Paxos
理解分布式一致性:Paxos协议之Basic Paxos 角色 Proposal Number & Agreed Value Basic Paxos Basic Paxos without f ...
- QML-AES加解密小工具
Intro 为了解码网课视频做的小工具,QML初学者可以参考一下. 项目地址 Todo 在插入新条目时,ListView不会自动根据section进行重排,因此出现同一个文件夹重复多次的现象.目测强行 ...
- POJ1077 八数码问题
题目:八数码 网址:http://poj.org/problem?id=1077 在一个3×3的网格中,1~8这8个数字和一个"X"恰好不重不漏地分布在这3×3的网格中. 例如: ...
- Java9新特性系列(module&maven&starter)
上篇已经深入分析了Java9中的模块化,有读者又提到了module与starter是什么关系?本篇将进行分析. 首先先回顾下module与maven/gradle的关系: module与maven/g ...
- Chrome最新版如何安装Proxy SwitchyOmega
由于Chrome的代理设置与windows10的1703及以后的版本不兼容,导致无法使用代理功能,给工作带来了很大的不便.最近发现一款不错的Chrome代理插件Proxy SwitchyOmega,由 ...
- Mobile Communication
最近面试有被问到LTE,感觉说得不太清楚,重新整理一遍. 一.第一代移动通信系统 1G,诞生于1980年左右.模拟通信系统,抗干扰性能差,使用FDMA技术,主要用来传输话音信号,最拉风的就是" ...
- Codeforce-Ozon Tech Challenge 2020-D. Kuroni and the Celebration(交互题+DFS)
After getting AC after 13 Time Limit Exceeded verdicts on a geometry problem, Kuroni went to an Ital ...
- CF906D Power Tower
扩展欧拉定理 CF906D Power Tower 洛谷交的第二个黑题 题意 给出一个序列\(w-1,w_2,\cdots,w_n\),以及\(q\)个询问 每个询问给出\(l,r\),求: \[w_ ...