Mybatis insert操作 主键回写

新增插入一条数据后,不论数据库是否支持主键自增,如果需要获取当前已经增加的那条数据的主键用什么方法 ?

1、数据库支持主键自增可以用下面方法

  • userMapper.xml
<insert id="addUser" parameterType="user"
 keyProperty="uid" useGeneratedKeys="true">
        INSERT INTO users(uid,uname,uage) values(#{uid},#{uname}#{uage});
</insert>

2、数据库不支持主键自增:

  • userMapper.xml:
<!--数据库支持主键自增的情况,在插入操作之后进行主键查找。所以order = after -->
    <insert id="addUser" parameterType="com.itheima.pojo.User">
        <selectKey keyProperty="uid" resultType="Integer" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO users(uid,uname,uage) values(#{uid},#{uname}#{uage});
    </insert>
    <!---->
    <!--数据库不支持主键自增的情况,可以生成随机数作为主键。,在插入操作之前进行主键赋随机数值。所以order = before-->
    <insert id="addUser" parameterType="com.itheima.pojo.User">
        <selectKey keyProperty="uid" resultType="Integer" order="BEFORE">
            SELECT FLOOR(RAND()*1000+1)
        </selectKey>
        INSERT INTO users(uid,uname,uage) values(#{uid},#{uname}#{uage});
    </insert>

猜你喜欢

转载自blog.csdn.net/qq_45486709/article/details/123327486