Loading... ## XML方式 ### 返回自增主键 ```xml <insert id="insert1" useGeneratedKeys="true" keyProperty="id"> insert into sys_user(user_name,password,email,info,create_time) values(#{userName},#{password},#{email},#{info},#{createTime}) </insert> ``` 使用`useGeneratedKeys`设置为true后 , MyBatis会使用JDBC的getGeneratedKeys方法取出由数据库内部生成的主键 . 获得主键值之后将其赋给keyProperty配置的 id 属性 . 当需要设置多个属性时 , 使用逗号隔开 , 这种情况下 还需要配置 keyColumn属性 , 按顺序指定数据库的列 , 这里列的值会和 keyProperty 配置的属性一一对应 . 由于要使用数据库返回的主键值 , 所以SQL上下两部分的列中去掉了 id 列和对于的 #{id} 属性 ### 返回非自增主键 采用`<selectKey>`标签获取主键的值 , 这种方式对提供和不提供主键自增功能的数据库同样适用 ```xml <insert id="insert2"> insert into sys_user(user_name,password,email,info,create_time) values(#{userName},#{password},#{email},#{info},#{createTime}) <selectKey resultType="int" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert> ``` selectKey标签的 keyProperty和上面useGeneratedKeys的用法和含义一样 , 这里的resultType用于设置返回值类型. order 属性和数据库相关 , 在MYSQL 中 , order是AFTER , 因为当前及记录的主键值在insert语句执行成功之后才能拿到 , 而在ORACLE中 ,oder是BEFORE , 因为ORACLE需要先从序列取到值 , 再将其作为主键插入到数据库 最后修改:2022 年 09 月 13 日 © 来自互联网 打赏 赞赏作者 支付宝微信 赞 本作品采用 CC BY-NC-SA 4.0 International License 进行许可。