Mybatis+Oracle 返回自增字段值

<insert useGeneratedKeys="true" keyProperty="id" keyColumn="id" ></insert>
# useGeneratedKeys需要数据库本身支持字段自增的

<insert id="insertUser" parameterType="com.xxxx.User">
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
        select userinfo_seq.nextval from dual --"userinfo_seq"为你创建的自增序列名称
    </selectKey>
    insert into userinfo(id,name,age) values(#{id},#{name},#{age})
</insert>
/*
注意:
1> mybatis实现Oracle主键返回自增值,与MySQL、SQL server不同,insert标签中不需要useGeneratedKeys属性和KeyProperty属性
2>需要在insert标签中,使用selectKey标签,并指明:
	①KeyProperty="你需要自增的字段名称"  
	②order="BEFORE"   表示在insert语句执行前,获取到自增序列,组装到#{id}中,使用到insert语句中,并同时使mybatis获取到该自增序列

3>insert语句中,需要显式的写出字段的字段,如 id,并在values中,使用#{id}
*/

/*
insert方法返回的是影响表数据的行数,单条插入,成功,则返回1,失败,则返回0
获取的自增数值会被mybatis自动组装到实体类对象中,通过"对象.getId()"获取
*/
// 注解方式
@SelectKey(
    before = true,
    resultType = Integer.class,
    keyProperty = "id",
    statement = "select userinfo_seq.nextval from dual"
)
@Insert("insert into userinfo(id,name,age) values(#{id},#{name},#{age})")
int insertUser(User user);

参考博客:https://blog.csdn.net/weixin_42675423/article/details/127106327?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~AD_ESQUERY~yljh-1-127106327-blog-116912915.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~AD_ESQUERY~yljh-1-127106327-blog-116912915.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=2

posted @ 2023-03-10 13:59  五字妹妹实在是棒  阅读(36)  评论(0)    收藏  举报
返回顶部