zoukankan      html  css  js  c++  java
  • MyBatis下在插入数据时获得MySQL自增长序列的值

    在写代码的时候经常会碰到这样一种情况,就是有个A表的主键是mysql自动递增的序列,而这个A表的主键又是B表的外键。有时候会在同一个方法事务里先插入A表,然后插入B表,但是这时后在程序中还无法获得这个A表的自动递增的序列主键,导致插入B表的时候外键插入为空或报错。这种情况可以通过在MyBatis中配置selectKey 为mysql的LAST_INSERT_ID()函数获得插入时的自增序列值来获得。
    配置如下:
    <insert id="insertBook" parameterType="com.doit8.ishare.modules.ishareread.pojo.Book" >
    <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="bookId">
    SELECT LAST_INSERT_ID() AS bookId
    </selectKey>
    INSERT INTO ishare_book(
    book_name,
    book_author,
    book_press,
    book_pressdate,
    book_isbn,
    book_content_desc,
    book_author_desc,
    book_catalog,
    book_image
    ) VALUES (
    #{bookName},
    #{bookAuthor},
    #{bookPress},
    #{bookPressdate},
    #{bookIsbn},
    #{bookContentDesc},
    #{bookAuthorDesc},
    #{bookCatalog},
    #{bookImage}
    </insert>
    其中 SELECT LAST_INSERT_ID() AS bookId 通过mybaits的ORM映射到Book类的bookId的属性对应到的是表中book_id的自动递增的主键序列字段,这样就可以通过book对象的bookId属性获得这个值了。

    可以看到在对象插入之前bookId的值为null,插入之后bookId就有值了


  • 相关阅读:
    JQuery简介
    javascript中的正则表达式
    JSDom
    JavaScript事件的属性列表
    JavaScript中innerText和innerHTML的区别
    JavaScript设置粘贴板
    Windows.event
    Https:Java代码设置使用证书访问Https
    Https:证书生成 .p12 .keyStore 和 .truststore文件理解
    HTTP:HTTP请求头和响应头详解
  • 原文地址:https://www.cnblogs.com/xiejava/p/15171440.html
Copyright © 2011-2022 走看看