当前位置: 首页 > 编程日记 > 正文

MyBatis的插入后获得主键的方式

需求:

使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值

方法:

在mapper中指定keyProperty属性,示例如下:

<insert id="insertUser" useGeneratedKeys="true" keyProperty="userId" parameterType="cn.stu.entity.UserEntity">insert into user(userName,password,comment)  values(#{userName},#{password},#{comment})  
</insert>


注意

此处可能会有坑:如果在<insert>的右边尖括号之后有空格,在启动时可能会报:元素类型 "insert" 必须后跟属性规范 ">" 或 "/>",并且,在作新增操作时会一直增不进去而报SQL语法错误,碰到这类问题就把<insert>标签整体在敲一边就可以了

如上所示,我们在insert中指定了keyProperty="userId",其中userId代表插入的User对象的主键属性。

User.java

public class User {  private int userId;  private String userName;  private String password;  private String comment;  //setter and getter  
}  

 UserDao.java

public interface UserDao {  public int insertAndGetId(User user);  }  

测试:

Java代码

User user = new User();  
user.setUserName("chenzhou");  
user.setPassword("xxxx");  
user.setComment("测试插入数据返回主键功能");  System.out.println("插入前主键为:"+user.getUserId());  
userDao.insertAndGetId(user);//插入操作  
System.out.println("插入后主键为:"+user.getUserId());  


 输出:

插入前主键为:0  
插入后主键为:15


查询数据库:

如上所示,刚刚插入的记录主键id为15

总结:

用了这个useGenerateKeys="true"后,不用再在写一句关于select的SQL(降低数据库的压力)而直接能够得到刚刚插进去的那个主键,但是——这个属性只能用在主键能自增长的数据库里面比如MySQL可以用,但是oracle就不能用了!
对于oracle返回自增主键(oracle序列)如下:

  • keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性
  • order:相对于insert语句来说它的执行顺序,只要不是自增主键,那么就设置为before
  • resultType:指定返回的结果类型
<insert id="insert" parameterType="cn.entity.Userinfo"> <selectKey keyProperty="userId" resultType="java.lang.String" order="before">select seq.nextval from dual</seledtKey>insert intouserinfo (userId,userName,userpass,usertype,address) values(#{userId},#{userName},#{userPass},#{userType},#{address})</insert>

相关文章:

JAVA 中 13 种锁的实现方式

分布式系统时代,线程并发,资源抢占,慢慢变得很重要。那么常见的锁都有哪些?

String的Intern()方法,详解字符串常量池!

字符串拼接最好使用StringBuilder调用append来拼接。使用加号“+”拼接,会new一个StringBuilder,并且在最后调用toString方法时还会new String()。内存中由于创建了较多的StringBuilder和String对象,还有一方面是内存占用,调用GC还会额外花费时间。所以,字符串拼接直接使用StringBuilder会大大提高性能,尤其是多个字符串拼接。

硬盘盘符双击无法打开,只能右键打开(解决方法)(转载)

开始---运行---cmd&#xff0c;例如D盘&#xff0c;就输入  D: dir /a &#xff08;没有参数A是看不到的&#xff0c;A是显示所有的意思&#xff09; 此时你会发现一个autorun.inf文件   attrib autorun.inf -s -h -r 去掉autorun.inf文件的系统、只读、隐藏属性&#xff0…

Unity 2021创建2D休闲点击器游戏视频教程

Unity 2021创建2D休闲点击器游戏视频教程 Learn how to create a 2D Idle Clicker Game in Unity 2021 了解如何在Unity 2021中创建2D闲置点击器游戏 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&…

html实现pdf预览打印机,Pdf操作(HTML转PDF,PDF直接网页连接打印机)

Pdf导出的操作&#xff1a;引用TuesPechkin.dll和TuesPechkin.Wkhtmltox.AnyCPU.dll程序集&#xff0c;新建PDF静态类 PDFConverter&#xff0c;在web.config配置保存dir/// ///pdf转换/// public static classPdfConvert {/// ///staticDeploymentPath/// private static read…

CUDA编程遇到的问题

1、总喜欢在core 代码中&#xff0c;访问device memory。 然后排错很久&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 2、第一次cudaMalloc() 耗时很久 3、cudaMalloc对于大数据也耗时很久 4、一致内存使用错误&#xff0c;不知道为什么&#xff01;&#xff…

2022-2028年中国数字化档案加工行业市场深度分析及发展策略分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数字化档案加工行业市场行业相关概述、中国数字化档案加工行业市场行业运行环境、分析了中…

eclipse打开处于无响应状态解决办法

eclipse打开后处于无响应状态&#xff0c;变没有了反映&#xff0c;并且cup占用率为0。应该是非正常关机导致eclipse工作区的文件状态错误导致。 解决方案&#xff1a;在工作区目录中&#xff0c;有一个.metadata目录&#xff0c;里面是工作区及各插件的信息&#xff0c;删除此…

Unity创建在线多人游戏视频教程

Unity创建在线多人游戏视频教程 Learn To Create An Online Multiplayer Game In Unity 学会在Unity中创建在线多人游戏 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更…

《需求分析》读后感之二

项目的目标是系统的业务需求。在很多情况下&#xff0c;涉众可以清晰地表达出系统的业务需求&#xff0c;这时可以通过安排和涉众的面谈来明确项目的动机。但也有很多情况下&#xff0c;涉众无法表达他们的业务需求&#xff0c;或者表达的业务需求不够清晰。因此&#xff0c;要…

统计学 计算机论文,统计学专业论文范文

1实验教学软件选择 目前流行的统计软件有SAS、SPSS、Statistica、EViews、Excel等&#xff0c;但上述软件的特点和功能优势各不相同&#xff0c;所以要根据学生的专业特点和教学要求选用不同的统计软件或者软件组合。但是由于专业统计软...2019-09-061非统计专业统计学教学过程…

JVM年轻代,老年代,永久代详解​​​​​​​

秉承不重复造轮子的原则&#xff0c;查看印象笔记分享连接↓↓↓↓ 传送门&#xff1a;JVM年轻代&#xff0c;老年代&#xff0c;永久代详解 速读摘要 最近被问到了这个问题&#xff0c;解释的不是很清晰&#xff0c;有一些概念略微模糊&#xff0c;在此进行整理和记录&…

html中#include file的使用方法

有两个文件a.htm和b.htm&#xff0c;在同一文件夹下a.htm内容例如以下 <!-- #include file"b.htm" --> b.htm内容例如以下 今天&#xff1a;雨 31 ℃&#xff5e;26 ℃ <br />明天&#xff1a;雷阵雨 33 ℃&#xff5e;27 ℃ 直接在浏览器中打开a&#…

Linux服务之Samba服务篇

Samba服务 桑巴Smb是基于cs架构 作用&#xff1a;用于跨平台进行文件共享 优点&#xff1a;兼容性好&#xff0c;较为安全(具备身份验证&#xff09; 缺点&#xff1a;仅限内网环境使用 应用&#xff1a;一般在办公环境下使用 rz 也是一种可以在Windows和Linux操作系统之间进行…

ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景

ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace …

微型计算机系统外文,微型计算机控系统(单片机控制系统) 毕业论文外文翻译.doc...

微型计算机控系统(单片机控制系统) 毕业论文外文翻译英语翻译Microcontroller reset is to make the CPU and other system features are in a defined initial state, and from this state to work, reset PC 0000H, the microcontroller from the first - a unit to take co…

应用于cookie

将封装好的cookie函数 使用好cookie JavaScript代码 var aAdocument.getElementsByTagName(a); //使用var indexgetCookie(page_index);if(index){tab(index);}for(var i0; i<aA.length; i){(function(index){aA[i].onclickfunction(){tab(index); //设置一个cookiese…

2022-2028年中国数字电视产业投资分析及前景预测报告(全卷)

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数字电视行业市场行业相关概述、中国数字电视行业市场行业运行环境、分析了中国数字电视行…

分形之闵可夫斯基(Minkowski)

与上一篇文章分形之正方形折线相似&#xff0c;闵可夫斯基分形也是分形出正方体&#xff0c;不同之处是它分出了两个正方体。 核心代码: static void FractalMinkowski(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices) {Vector3 vSub vEnd - vStart…

文本框禁用后(readonly=readonly),光标置于文本框中按后退键,页面后退的解决方案...

//处理键盘事件 禁止后退键&#xff08;Backspace&#xff09;密码或单行、多行文本框除外function forbidBackSpace(e){var ev e || window.event;//获取event对象 var obj ev.target || ev.srcElement;//获取事件源 var t obj.type || obj.getAttribute(type);//获取事件源…

最全19000+国外AE模板合集包

最全19000国外AE模板合集包 此套模板 包含整理好的 2015-2021年6月 国外AE模板 19000多个 大小&#xff1a;3500G 模板已编号&#xff0c;含预览视频&#xff0c;方便预览和查找&#xff0c;&#xff08;少数模板无预览&#xff0c;少数模板只含预览图&#xff09; 云桥网络…

北大网络教育计算机作业,北大网络教育(计算机专业)网络基础作业答案.doc

北大网络教育(计算机专业)网络基础作业答案北大网络教育(计算机专业)计算机网络基础作业答案1.从逻辑结构上看&#xff0c;计算机和路由器分别属于资源子网和通信子网。2、 大型广域网常采用的拓扑结构是网络拓扑结构。3.常借用公用传输网络构建的网络类型是广域网。4. 简单地说…

什么是IOC为什么要使用IOC

概念&#xff1a; 作用&#xff1a; 结论&#xff1a;借助于“第三方”实现具有依赖关系的对象之间的解耦 在使用IOC之前的情况 如果有一个齿轮出了问题&#xff0c;就可能会影响到整个齿轮组的正常运 使用IOC之后 对象A获得依赖对象B的过程,由主动行为变为了被动行为&#xff…

垃圾回收之标记算法

前言 作为 Java 开发人员&#xff0c;其实是非常幸福的&#xff0c;因为 JVM 的存在&#xff0c;使得 Java 开发人员不需要像 C 或者 C开发人员那样需要手动申请内存、释放内存&#xff0c;这些资源申请、垃圾回收的操作&#xff0c;JVM 底层直接帮助我们全干了。 这为 Java 开…

将数组转换为字符串

$a1..10000 方法一&#xff1a; $a -join $null 方法二&#xff1a; -join $a 方法三&#xff08;效率次高&#xff09;&#xff1a; [string]::concat($a) 方法四&#xff08;效率最高&#xff0c;但写法麻烦&#xff09;&#xff1a; $sb New-Object System.Text.StringBuil…

【73套】Epic Stock Media配乐音效素材合集包

【73套】Epic Stock Media配乐音效素材合集包 大小&#xff1a;114G丨WAV Epic Stock Media 系列音效合辑 包含了战争电影音效、史诗梦幻音效、日常生活音效、森林环境音效、电影预告等诸多音效&#xff0c;可以满足你的各种制作需求。全部WAV无损格式&#xff0c;每个合辑独立…

自定义html托管,10分钟搞定“傻瓜式”的静态网站搭建托管之旅

原文发布于微信公众号&#xff1a;腾讯云存储(关注有惊喜)静态网站&#xff1a;有别于动态网站&#xff0c;它就是只包含静态内容(如图片、音频、视频、HTML、CSS、JS)的网站&#xff0c;不依赖服务器端动态渲染页面。那么静态网站托管应该如何使用呢&#xff1f;今天就和大家分…

调用bat文件执行java文件

set path./jre7/bin--设置jre路径&#xff0c;可以写jre的全路径java -cp "lib/*;" -Xms256m -Xmx512m com.shentong.Main--测试类入口pause 把所有的jar包都放在lib文件下面 转载于:https://www.cnblogs.com/yuwenfeng/p/4911075.html

2022-2028年中国数码相机行业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数码相机行业市场行业相关概述、中国数码相机行业市场行业运行环境、分析了中国数码相机行…

Android安卓游戏引擎大搜罗

2019独角兽企业重金招聘Python工程师标准>>> 1.AndEngine 简介&#xff1a; AndEngine基于libGDX框架开发&#xff0c;使用OpenGL ES进行图形绘制。同时继承了BOX2D物理引擎&#xff0c;因此能实现一些较为复杂的物理效果。在Rokon停止更新以后&#xff0c;AndEngin…