mybatis做insert操作的時候 怎麼才能返回插入的那條資料的id?,mybatisinsert

來源:互聯網
上載者:User

mybatis做insert操作的時候 怎麼才能返回插入的那條資料的id?,mybatisinsert

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

<insert id="xxx" parameterType="yyy" useGeneratedKeys="true">     insert into table(...) values (...)     <selectKey resultType="long" order="AFTER" keyProperty="id">     SELECT LAST_INSERT_ID() AS id     </selectKey> </insert>

2、對於不支援自動產生主鍵(如Oracle),可以採用以下方式

    <insert id="xxx" parameterType="yyy">           <selectKey keyProperty="id" resultType="long" order="BEFORE">              select my_seq.nextval from dual           </selectKey>        ...    </insert>
對於第一種更好的解決辦法:

方法:在mapper中指定keyProperty屬性,樣本如下:

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

如上所示,我們在insert中指定了keyProperty=”userId”,其中userId代表插入的User對象的主鍵屬性。

User.javaJava代碼  收藏代碼public class User {      private int userId;      private String userName;      private String password;      private String comment;      //setter and getter  }   UserDao.javaJava代碼  收藏代碼public interface UserDao {      public int insertAndGetId(User user);  }   測試:Java代碼  收藏代碼User user = new User();  user.setUserName("chenzhou");  user.setPassword("xxxx");  user.setComment("測試插入資料返回主鍵功能");  System.out.println("插入前主鍵為:"+user.getUserId());  userDao.insertAndGetId(user);//插入操作  System.out.println("插入後主鍵為:"+user.getUserId());  輸出:Shell代碼  收藏代碼插入前主鍵為:0  插入後主鍵為:15  如上所示,剛剛插入的記錄主鍵id為15

轉載自:http://blog.csdn.net/rapier512/article/details/51198684

查看評論

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.