转载请注明出处:
http://blog.csdn.net/czd3355/article/details/71302441

首先我先解释以下在在映射文件中的代码是什么意思。

<insert id="insertStudent" parameterType="com.czd.mybatis01.bean.Student">
    INSERT stu(name)VALUES (#{name})
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

总体解释:将插入数据的主键返回到 user 对象中。
具体解释:
SELECT LAST_INSERT_ID():得到刚 insert 进去记录的主键值,只适用与自增主键
keyProperty:将查询到主键值设置到 parameterType 指定的对象的那个属性
order:SELECT LAST_INSERT_ID() 执行顺序,相对于 insert 语句来说它的执行顺序
resultType:指定 SELECTLAST_INSERT_ID() 的结果类型
明白是什么意思后,那么我们要如何才能得到插入数据的主键呢?请看下面代码就知道了

关键代码:

@Test
public void main() throws Exception {
    StudentDao studentDao = new StudentDao();
    // 增加
    Student student = new Student();
    student.setName("b");
    studentDao.testInsertStudent(student);
}

public void testInsertStudent(Student student) throws Exception {
    SqlSession sqlSession = getSession().openSession();
    sqlSession.insert(nameSpace + ".insertStudent", student);
    sqlSession.commit();
    sqlSession.close();
    // 得到插入数据的主键并将其打印出来
    System.out.println("index: "+student.getId());
}

打印结果:

其中 index:21 就是我们想要的 id 值了

看到这里不知道有没有读者觉得这不是废话吗?student.getId() 后肯定是得到新插入数据的 id 呀。ok,那么我们来验证一下,把上面映射文件中的这段代码删掉。

<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    SELECT LAST_INSERT_ID()
</selectKey>

打印结果:

从图中我们可以发现程序没有执行 SELECT LAST_INSERT_ID()语句了,并且 index 的值变成了 null,也就是得不到新插入数据的 id 了

到此为止,相信你应该知道怎么使用 SELECT LAST_INSERT_ID() 了吧。

注意点:假如你使用一条INSERT语句插入多个行, LAST_INSERT_ID() 只会返回插入的第一行数据时产生的值。比如我插入了 3 条数据,它们的 id 分别是 21,22,23.那么最后我还是只会得到 21 这个值。

会员中心 收藏动态消息创作SELECT LAST_INSERT_ID() 的使用和注意事项相关推荐

  1. SELECT LAST_INSERT_ID() 的使用和注意事项

    尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/71302441 首先我先解释以下在在映射文件中的代码是什么意思. < ...

  2. php会员模版,会员中心模板

    默认会员中心模板文件结构 ├─member 会员中心 │ footer.php 脚部 │ header.php 头部 │ sidebar.php 默认边栏 │ sidebar_content.php ...

  3. php会员中心模板,会员中心模板

    会员中心模板文件结构: │ ├─archive │ add_archive.php │ add_archive_article.php │ add_archive_thematic.php │ cho ...

  4. emlog独立会员中心模板源码 UserEmlog Ver:1.0

    介绍: 这UserEmlog去年作者已经在开始弄了,但是种种原因被迫停止了项目,期初还有人叫作者开源个免费版的,之前是不打算开源的,但是现在由于现在emlog这,我还是开源了吧.目前只实现了一些基础功 ...

  5. 帝国cms 会员中心2.0

    <?php if(!defined('InEmpireCMS')) {exit(); } ?> <?php $public_diyr['pagetitle']='会员中心'; $ur ...

  6. 帝国cms会员中心1.2

    <?php if(!defined('InEmpireCMS')) {exit(); } ?> <?php $public_diyr['pagetitle']='会员中心'; $ur ...

  7. 手机版会员中心html,会员中心.html

     会员中心 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif'; ...

  8. 小刀娱乐网:dedecms 会员中心调用会员最后登录时间 和上次登录ip

    在会员中心的任意模板中可以调用以下自定义函数 <?php echo login_time_ip($cfg_ml->M_ID);?> 将以下函数放到include/extend.fun ...

  9. js 动态加载select触发事件

    动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) {$.ajax({type: "po ...

最新文章

  1. 解析深度学习:卷积神经网络原理与视觉实践
  2. 为EditText输入框加上提示信息
  3. 通过一道面试题来看 C++ 语言中的表达式求值
  4. hashmap扩容 面试_HashMap面试,看完这一篇就够了(上)
  5. [WPS笔试题]实现栈的push,pop,max且时间复杂度为O(1)
  6. 中国联通4G携号转网业务支撑的架构实践
  7. 让IT不加班,让业务不等待,一文讲透自助式分析的前世今生
  8. Java的重写equals但不重写hashCode方法的影响
  9. 向模块化进军,创建类
  10. python 逻辑回归 复杂抽样_如何用Python进行抽样?
  11. 如何在整个数据库中查寻一条数据?
  12. 利用计算机对调查问卷进行,关于电脑需求调查问卷
  13. css transition opacity,CSS transition属性
  14. 会计信息质量可靠性的案例_会计信息可靠性的分析
  15. 【微信小程序】一文带你吃透开发中的常用组件
  16. 条形码宽度大小为什么不能任意调整?是打印机问题还是软件问题?
  17. Android TTS语音播报实践
  18. Scratch 飞机对战
  19. [GO]学习新语言之卡塔练习--猜数字
  20. Linux下的启动oracle服务 启动监听 开放端口操作

热门文章

  1. [leetcode] 746.使用最小花费爬楼梯
  2. 为什么不要使用长事务
  3. python批量读取csv并写入_Python如何批量读取CSV文件中指定信息并写入doc文件命名中?...
  4. chrome 70 android,Android版Chrome Beta 70 (70.0.3538.17) 已发布
  5. sellhis股票平面图
  6. JFreeChart设置背景图片 .
  7. redhat 添加ssh端口_RHEL 7修改ssh默认端口号
  8. mysql8.0.15远程登陆权限,MySQL8.0给root用户赋予远程连接权限
  9. python函数参数定义顺序_Python函数定义-位置参数-返回值
  10. php-fpm 无法运行cli,linux-怎样让php在cli与fpm环境下运行时加载不同的扩展?