mysql获取最新插入的id值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moyanxuan_1993_2_24/article/details/51673357

对于mysql表中主键设置我自动增长,当我们插入一条记录的时候,id会自动增长,而我们又想得到这个id ,用于另一张表的插入,我们怎样获取这个id呢?有的人通过max(id) 来获取,这样是不合理的,如果另外一个人恰巧在你执行select max(id)获取之前,插入一条记录,那么它的id就变了。而mysql又不存在锁表的功能,所以我们可以通过LAST_INSERT_ID 来获取。

对于mybatis

<!-- 新增应用 -->
    <insert id="addApplication" parameterType="com.bxy.entity.application.Application"
        useGeneratedKeys="true" keyProperty="id">
        insert into vrv_application_list
        (
        appname,
        apptype,
        iconpath,
        filepath,
        filesize,
        pic1
        )
        values
        (
        #{appname},
        #{apptype},
        #{iconpath},
        #{filepath},
        #{filesize},
        #{pic1}
        )
        <selectKey resultType="java.lang.Integer" order="AFTER"
            keyProperty="id">
            SELECT LAST_INSERT_ID()
        </selectKey>

通过上面的方式,我就把最新插入的一条id,绑定返回到我的实体Application上了,前提是你的Application实体里一定有id这个属性。不然会报错。
当然如果你的parameterType=”java.util.Map” 的话,也是可以的,就不需要做什么多余的,会自动绑定到Map上 ,例如:

<!-- 添加消息 -->
    <insert id="addMessage" parameterType="java.util.Map"
        useGeneratedKeys="true" keyProperty="id">
        insert into vrv_push_message_tab
        (
        type,
        title,
        message,
        create_id,
        create_time,
        force_open
        )
        values
        (
        #{type},
        #{title},
        #{message},
        #{create_id},
        now(),
        #{force_open}
        )
        <selectKey resultType="java.lang.Integer" order="AFTER"
            keyProperty="id">
            SELECT LAST_INSERT_ID()
        </selectKey>
    </insert>

在java代码里只需要通过下面的方式获取就可以了

int id = addMessage(map);

大功告成。



猜你喜欢

转载自blog.csdn.net/moyanxuan_1993_2_24/article/details/51673357
今日推荐