小白笔记:selectKey的使用方法
一般来说,我们数据库的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的使用方法相关推荐
- 《Go语言圣经》学习笔记 第六章 方法
<Go语言圣经>学习笔记 第六章 方法 目录 方法声明 基于指针对象的方法 通过嵌入结构体来扩展类型 方法值和方法表达式 示例:Bit数组 封装 注:学习<Go语言圣经>笔记, ...
- python类的特殊方法汇总_Python笔记001-类的特殊方法
Python笔记001-类的特殊方法 以下是我学习<流畅的Python>后的个人笔记,现在拿出来和大家共享,希望能帮到各位Python学习者. 首次发表于: 微信公众号:科技老丁哥,ID: ...
- Ui学习笔记---EasyUI的使用方法,EasyLoader组件使用
Ui学习笔记---EasyUI的使用方法,EasyLoader组件使用 技术qq交流群:CreDream:251572072 1.使用之前导入文件: 这里用jquery-easyui-1.2.6 ...
- 机器学习笔记之马尔可夫链蒙特卡洛方法(三)MH采样算法
机器学习笔记之马尔可夫链蒙特卡洛方法--MH采样算法 引言 回顾:马尔可夫链与平稳分布 马尔可夫链 平稳分布 MH采样算法 采样思路 MH采样算法过程 引言 上一节介绍了马尔可夫链(Markov Ch ...
- java12.0.1版本环境变量设置,2019年5月16,小白笔记
java12.0.1版本环境变量设置,2019年5月16,小白笔记 Java12.0.1版本下载 环境变量设置详细的步骤: 注意:每个版本的环境变量设置是不同的,一定要先知道自己用的是什么版本的jav ...
- 计算机启动盘安装教程,小白装机u盘使用方法
小白一键重装系统功能非常强大,不仅拥有简单的一键重装系统功能,还有制作U盘启动盘重装系统的功能,电脑开不了机也能重装系统.下面,我就给大家介绍一下小白装机U盘使用方法 一.准备工作: 2.大于10G的 ...
- chmod 755和chmod +x 区别 | Linux修改文件属性 | 小白笔记
Linux chmod命令 修改文件属性 参考链接:菜鸟教程 Linux修改文件属性 | 小白笔记 认识 chmod 命令 chmod 755和chmod +x 区别 认识 chmod 命令 理解 数 ...
- js学习笔记2 -- js使用方法
js学习笔记2 -- js使用方法 方法一,使用外部js文件(推荐使用) 方法二,写在script标签中 方法三,写到标签的onclick属性中 方法四,使用超链接 方法一,使用外部js文件(推荐使用 ...
- 从零开始用Python实现股票量化交易之小白笔记(7)
传送门 本系列原创博文传送门: 从零开始用Python实现股票量化交易之小白笔记(1) 从零开始用Python实现股票量化交易之小白笔记(2) 从零开始用Python实现股票量化交易之小白笔记(3) ...
- 怎么才能高效的打开dwg文件呢?CAD小白有什么简单的方法?
怎么才能高效的打开dwg文件呢?CAD小白有什么简单的方法?相信很多刚开始接触CAD的小伙伴都会有这样的疑问.确实,在刚开始学习CAD相关内容时,不仅绘制图纸是一个大问题,就连高效的查看图纸也是一个大 ...
最新文章
- 高速缓冲DNS相关配置详情
- jQuery 事件绑定
- oracle的rman备份保留天数,RMAN 基于时间的备份保留策略调整
- 5月份Github上最热门的数据科学和机器学习项目
- 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
- 插画素材|萌化!超可爱的动物主题手绘复古插画
- 干货分享 | 自然语言处理及词向量模型介绍(附PPT)
- 【JAVA基础知识总结】JAVA对象转型之上转型对象与下转型对象
- for的部分使用方法
- Socket.io 的 emit
- 图解算法:八大排序算法
- 近视眼手术之后计算机专业,做完近视激光手术后多久可以整天对着电脑工作。应注意什么?...
- 深入理解MVCC实现原理以及当前读和快照读存在的问题
- Python串口通信发送浮点型数据
- 目标检测模型从训练到部署,其实如此简单
- 这可能是前端开发中能遇到最全的cookie问题了
- python 基础代谢率计算_计算基础代谢率(BMR)
- 插画中的云朵图案随处可见,那么云朵图案是怎么制作的呢?
- win7 ie11 无法卸载
- 同为社会责任验厂该如何选择BSCI和SMETA验厂?