我是靠谱客的博主 无情酒窝,最近开发中收集的这篇文章主要介绍MyBatis自动生成id useGeneratedKeys,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

mybatis可以使用useGeneratedKeys来自动生成id(其他数字的值也一样可以):

    <insert id="save" parameterType="UserAlias" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO userinfo(username,age)
        VALUES
        (#{username}, #{age})
        </insert>

上面的代码是针对mysql,在数据库中设置了id自增长的示例。

keyProperty这里指定自动增长的字段,我这里是id。所以下边的insert中可以不写id字段,前提是数据库中一定要设置好id的自增长。

如果数据库中没有设置自增长可以用下面代码:

    <insert id="save" parameterType="UserAlias" useGeneratedKeys="true" keyProperty="id">
        <selectKey keyProperty="id" resultType="long" order="BEFORE">
          SELECT if(max(id) is null,1,MAX(id) + 1 ) as id from userinfo
        </selectKey>
        INSERT INTO userinfo(id,username,age)
        VALUES
        (#{id}, #{username}, #{age})
        </insert>

这时候的insert语句就要写上id字段喽。

如果是Oracle这种没有自增长功能的数据库可以用上边的方式,也可以用sequence。如建了一个user_id_sequence:

    <insert id="save" parameterType="UserAlias" useGeneratedKeys="true" keyProperty="id">
        <selectKey keyProperty="id" resultType="long" order="BEFORE">
          SELECT user_id_sequence.nextval from dual
        </selectKey>
        INSERT INTO userinfo(id,username,age)
        VALUES
        (#{id}, #{username}, #{age})
        </insert>

这里Oracle的我没有测试,只是给出参考。

最后

以上就是无情酒窝为你收集整理的MyBatis自动生成id useGeneratedKeys的全部内容,希望文章能够帮你解决MyBatis自动生成id useGeneratedKeys所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部