一般来说,我们数据库的ID值都是设置的自动增长,所以在使用Mybatis时,我们添加记录时一般不会添加ID进去,但是我们确需要知道我们添加的记录ID是多少,这时候就需要使用selectKey这个好东西了。

首先来了解一下selectKey的j几个重要的属性:

keyProperty:Java对象的属性名

keyColumn:keyColumn是要和select语句中的表名相对应的实体类的字段对应的,但同时他也要和select语句中的列名对应

resultType:返回结果类型

order:返回查询前值(BEFORE)还是查询后的值(AFTER)

知道了selectKey的属性,我们还需要知道怎么获取到刚添加的记录的ID

MySQL有个函数:

LAST_INSERT_ID():取得本连接的刚insert的第一行数据的主键值

敲黑板!!!

1、只适用于自增主键。

2、只对应insert语句

3、只会返回插入的第一行数据时产生的值(同时插入多行时)

参考文档:

MySQL :: MySQL 5.7参考手册:https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id

OK,此时我们就可以开始我们的搞事:

在一个insert中去实验一下

接口类中:

    /*** 保存方法* @param user*/int saveUser(User user);

映射文件中:

<insert id="saveUser" parameterType="com.moro.domain.User"><selectKey keyProperty="id" keyColumn="id" resultType="int"  order="AFTER">select LAST_INSERT_ID();</selectKey>insert into user (username,birthday,sex) values (#{username},#{birthday},#{sex});
</insert>

这样就可以获取到每次插入的记录的ID,问题来了,我们要怎么取出来呢?

写一个测试类try亿try

private SqlSessionFactory sqlSessionFactory = null;private SqlSession sqlSession = null;private IUserDao iUserDao = null;private InputStream is = null;@Beforepublic void init(){try {is = Resources.getResourceAsStream("SqlMapConfig.xml");} catch (IOException e) {e.printStackTrace();}if (is != null) {sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);sqlSession = sqlSessionFactory.openSession();iUserDao = sqlSession.getMapper(IUserDao.class);}}
@Test
public void testSave(){User user = new User("张三",new Date(),"男");iUserDao.saveUser(user);//  获取刚添加的IDSystem.out.println("刚添加的ID为:"+user.getId());
//  提交事务sqlSession.commit();
//  释放资源sqlSession.close();if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}

执行OK!!!!!

小白笔记:selectKey的使用方法相关推荐

  1. 《Go语言圣经》学习笔记 第六章 方法

    <Go语言圣经>学习笔记 第六章 方法 目录 方法声明 基于指针对象的方法 通过嵌入结构体来扩展类型 方法值和方法表达式 示例:Bit数组 封装 注:学习<Go语言圣经>笔记, ...

  2. python类的特殊方法汇总_Python笔记001-类的特殊方法

    Python笔记001-类的特殊方法 以下是我学习<流畅的Python>后的个人笔记,现在拿出来和大家共享,希望能帮到各位Python学习者. 首次发表于: 微信公众号:科技老丁哥,ID: ...

  3. Ui学习笔记---EasyUI的使用方法,EasyLoader组件使用

    Ui学习笔记---EasyUI的使用方法,EasyLoader组件使用 技术qq交流群:CreDream:251572072 1.使用之前导入文件:   这里用jquery-easyui-1.2.6 ...

  4. 机器学习笔记之马尔可夫链蒙特卡洛方法(三)MH采样算法

    机器学习笔记之马尔可夫链蒙特卡洛方法--MH采样算法 引言 回顾:马尔可夫链与平稳分布 马尔可夫链 平稳分布 MH采样算法 采样思路 MH采样算法过程 引言 上一节介绍了马尔可夫链(Markov Ch ...

  5. java12.0.1版本环境变量设置,2019年5月16,小白笔记

    java12.0.1版本环境变量设置,2019年5月16,小白笔记 Java12.0.1版本下载 环境变量设置详细的步骤: 注意:每个版本的环境变量设置是不同的,一定要先知道自己用的是什么版本的jav ...

  6. 计算机启动盘安装教程,小白装机u盘使用方法

    小白一键重装系统功能非常强大,不仅拥有简单的一键重装系统功能,还有制作U盘启动盘重装系统的功能,电脑开不了机也能重装系统.下面,我就给大家介绍一下小白装机U盘使用方法 一.准备工作: 2.大于10G的 ...

  7. chmod 755和chmod +x 区别 | Linux修改文件属性 | 小白笔记

    Linux chmod命令 修改文件属性 参考链接:菜鸟教程 Linux修改文件属性 | 小白笔记 认识 chmod 命令 chmod 755和chmod +x 区别 认识 chmod 命令 理解 数 ...

  8. js学习笔记2 -- js使用方法

    js学习笔记2 -- js使用方法 方法一,使用外部js文件(推荐使用) 方法二,写在script标签中 方法三,写到标签的onclick属性中 方法四,使用超链接 方法一,使用外部js文件(推荐使用 ...

  9. 从零开始用Python实现股票量化交易之小白笔记(7)

    传送门 本系列原创博文传送门: 从零开始用Python实现股票量化交易之小白笔记(1) 从零开始用Python实现股票量化交易之小白笔记(2) 从零开始用Python实现股票量化交易之小白笔记(3) ...

  10. 怎么才能高效的打开dwg文件呢?CAD小白有什么简单的方法?

    怎么才能高效的打开dwg文件呢?CAD小白有什么简单的方法?相信很多刚开始接触CAD的小伙伴都会有这样的疑问.确实,在刚开始学习CAD相关内容时,不仅绘制图纸是一个大问题,就连高效的查看图纸也是一个大 ...

最新文章

  1. 高速缓冲DNS相关配置详情
  2. jQuery 事件绑定
  3. oracle的rman备份保留天数,RMAN 基于时间的备份保留策略调整
  4. 5月份Github上最热门的数据科学和机器学习项目
  5. 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
  6. 插画素材|萌化!超可爱的动物主题手绘复古插画
  7. 干货分享 | 自然语言处理及词向量模型介绍(附PPT)
  8. 【JAVA基础知识总结】JAVA对象转型之上转型对象与下转型对象
  9. for的部分使用方法
  10. Socket.io 的 emit
  11. 图解算法:八大排序算法
  12. 近视眼手术之后计算机专业,做完近视激光手术后多久可以整天对着电脑工作。应注意什么?...
  13. 深入理解MVCC实现原理以及当前读和快照读存在的问题
  14. Python串口通信发送浮点型数据
  15. 目标检测模型从训练到部署,其实如此简单
  16. 这可能是前端开发中能遇到最全的cookie问题了
  17. python 基础代谢率计算_计算基础代谢率(BMR)
  18. 插画中的云朵图案随处可见,那么云朵图案是怎么制作的呢?
  19. win7 ie11 无法卸载
  20. 同为社会责任验厂该如何选择BSCI和SMETA验厂?

热门文章

  1. AOE网活动的最早、最迟发生时间及关键路径问题
  2. linux的软驱光驱有什么用,Linux下如何使用光驱、软驱、U盘???
  3. USB 传输方式(同步、等时)
  4. python-消息推送(企业微信)
  5. php的数组排序方法,PHP 数组排序方法总结 推荐收藏
  6. MATLAB栅格法地图环境
  7. Android汽车服务篇(四) CarAudioService
  8. 安卓连接Mqtt服务器
  9. springBoot 整合 hikari
  10. 30道软件测试基础面试题!(含答案)