Mybatis insert操作 返回插入的那条数据的id

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

1、useGeneratedKeys="true" 可以获取自增长的ID 只支持具有自增长方式的那种数据库(mysql, mssql 等 但 oracle 就不支持了 ),如mysql:

现userId为主键,且设置了自增长,现在插入一条数据并且获取这条数据的userId:

<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="User">  
    insert into user(userName,password,comment)  
    values(#{userName},#{password},#{comment})  
</insert> 

User user = new User();  
user.setUserName("wtyy");  
user.setPassword("xxxx");  
user.setComment("测试插入数据返回主键功能");  
System.out.println("插入前主键为:"+user.getUserId());  //没有 0
userDao.insertAndGetId(user);//插入操作  
System.out.println("插入后主键为:"+user.getUserId());  //userId 的值

2.对于不支持自动生成主键(如Oracle),可以采用以下方式
<insert id="insert" parameterType="com.test.User">
   <selectKey resultType="INTEGER" order="BEFORE" keyProperty="userId">  
       SELECT SEQ_USER.NEXTVAL as userId from DUAL
   </selectKey> 
    insert into user (user_id, user_name, modified, state)
    values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR},  #{modified,jdbcType=TIMESTAMP}, #{state,jdbcType=INTEGER})
</insert>

猜你喜欢

转载自blog.csdn.net/w_t_y_y/article/details/81939150