mysql数据库新插入数据,需要立即获取最新插入的id
对于mysql表中主键设置我自动增长,当我们插入一条记录的时候,id会自动增长,而我们又想得到这个id ,用于另一张表的插入,我们怎样获取这个id呢?有的人通过max(id) 来获取,这样是不合理的,如果另外一个人恰巧在你执行select max(id)获取之前,插入一条记录,那么它的id就变了。而mysql又不存在锁表的功能,所以我们可以通过LAST_INSERT_ID 来获取。
对于mybatis
<!-- 新增应用 -->
<insert id="addApplication" parameterType="com.bxy.entity.application.Application"
useGeneratedKeys="true" keyProperty="id">
insert into vrv_application_list
(
appname,
apptype,
iconpath,
filepath,
filesize,
pic1
)
values
(
#{appname},
#{apptype},
#{iconpath},
#{filepath},
#{filesize},
#{pic1}
)
<selectKey resultType="java.lang.Integer" order="AFTER"
keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
通过上面的方式,我就把最新插入的一条id,绑定返回到我的实体Application上了,前提是你的Application实体里一定有id这个属性。不然会报错。
当然如果你的parameterType=”java.util.Map” 的话,也是可以的,就不需要做什么多余的,会自动绑定到Map上 ,例如:
<!-- 添加消息 -->
<insert id="addMessage" parameterType="java.util.Map"
useGeneratedKeys="true" keyProperty="id">
insert into vrv_push_message_tab
(
type,
title,
message,
create_id,
create_time,
force_open
)
values
(
#{type},
#{title},
#{message},
#{create_id},
now(),
#{force_open}
)
<selectKey resultType="java.lang.Integer" order="AFTER"
keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
在java代码里只需要通过下面的方式获取就可以了
int id = addMessage(map);
mysql数据库新插入数据,需要立即获取最新插入的id的更多相关文章
- Mybatis中,当插入数据后,返回最新主键id的几种方法,及具体用法
insert元素 属性详解 其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成 ...
- MySQL数据库表的数据插入、修改、删除、查询操作及实例应用
一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...
- 数据库插入数据返回当前自增主键ID值的方法
当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. ...
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- mysql数据库千万级别数据的查询优化和分页测试
原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰 本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.com. ...
- MySQL数据库(四)—— 记录相关操作之插入、更新、删除、查询(单表、多表)
一.插入数据(insert) 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); # 后面的值必须与字段 ...
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- 使用grabit分析mysql数据库中的数据血缘关系
使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...
- OpenLayers添加点【php请求MySQL数据库返回GeoJSON数据】
php请求MySQL数据库返回GeoJSON数据的实现方法请参见: http://www.cnblogs.com/marost/p/6234514.html OpenLayers[v3.19.1-di ...
- php 连接mysql数据库并显示数据 实例 转载
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- jQuery实现点击单选按钮切换选中状态效果
实现效果:第一次点击单选按钮时选中该按钮,再次点击时取消选中该单选按钮. 关键就是要将单选按钮原来的值保存起来,第二次点击时.如果原来选中则取消,否则选中. 看代码吧,是用jQuery实现的,功能虽小 ...
- 关于Cocos2d-x中数据的存储提取和类型转换
1.获得存储在UserDefault中的变量,但是获得的变量是一个String类型的值,要用atoi函数转换为整型,但是atoi函数的传递参数是一个char*类型的值,所以用_Score.c_str( ...
- selenium测试(Java)--浏览器控制(四)
1. 控制浏览器窗口大小 1 package com.test.window; 2 3 import org.openqa.selenium.Dimension; 4 import org.openq ...
- Tensorflow参数初始化很慢的问题
首先查看是否使用了import cv2 如果有import cv2,说明是opencv的问题 因为如果你的opencv是本地编译的,那么很可能使用了cudnn进行编译,那么这个cv2就会占用显存,并且 ...
- Python版本,pip版本手动管理
http://blog.csdn.net/jiandanjinxin/article/details/53175121
- pip 安装库过慢
对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题. 所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装 ...
- C API 连接MySQL及批量插入
CMySQLMgr.h: #ifndef _CMYSQLMGR_H_ #define _CMYSQLMGR_H_ #include <iostream> #include "my ...
- Oracle数据库表空间与用户的关系是 ( )
Oracle数据库表空间与用户的关系是 ( )? A.一对一 B.一对多 C.多对一 D.多对多 解答: D 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用.
- e658. 组合图形
Area shape = new Area(shape1); shape.add(new Area(shape2)); shape.subtract(new Area(shape3)); shape. ...
- linux -- Ubuntu Server 安装图形界面
1.连接网络,你一定要确保网络通畅,如果你和我一样使用Wireless,那先找根网线插上,因为下面的安装都要通过网络下载组件的. 2.进入图形界面的命令是startX,敲击后会有安装xinit的提示. ...