1. 程式人生 > >mybatis insert操作 返回插入的那條資料的id

mybatis insert操作 返回插入的那條資料的id

1、useGeneratedKeys=”true” 可以獲取自增長的ID 只支援具有自增長方式的那種資料庫(mysql, mssql 等 但 oracle 就不支援了 )

<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("chenzhou");  
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>