id自增如何返回id的值

(一)第一種方式 當你把數據庫表設置爲自增Id時,這種新增不需要在輸入id值。如何返回id值,就用到了useGeneratedKeys 和 keyProperty

 @RequestMapping(value="/insertUser",method=RequestMethod.POST)
 @ResponseBody
 public int insertUser() {
     User user1 = new User();
     user1.setUsername("234");
     user1.setUsersex(4);
     user1.setDegree(100.08);
     int count = userTestService.insertUser1(user1);
     System.out.println("共插入1條數據"+"userid值爲"+user1.getUserid());
     return count;
    }

注意上述代碼@ResponseBody 一定的加,不然報:

java.lang.IllegalArgumentException: Unknown return value type: java.lang.Integer

keyProperty=“userid” 中userid爲主鍵

<insert id="insertUser1" useGeneratedKeys="true" keyProperty="userid">
        insert into richfit_myku(user_name,user_sex,degree)
        values(
        #{username}, #{usersex}, #{degree})
    </insert>
@Data
@TableName(value = "richfit_myku")
public class User implements Serializable {

    private int userid;
    private String username;
    private int usersex;
    private Double degree;
}

(二)第二種方式 selectKey 返回主鍵的值

有些數據庫(如 Oracle )不提供主鍵自增的功能,而是使用序列得到 個值,然後將這個值賦給 id ,再將數據插入數據庫。對於這種情況,可以採用另外 種方式:使用<selectKek>標籤來獲取主鍵的值,這種方式不適用於不提供主鍵自增功能的數據庫,也適用於提供主鍵自增功能的數據庫。

selectKey 標籤 ke yColumn keyProperty 和上面 useGeneratedKeys 的用法含義相同 ,這 resultType 用於設置返回值類型order屬性的設置和使用的數據庫有關MySQL 數據庫中, order 屬性設置的值是 AFTER,因爲當前記錄的主鍵值在 insert 語句執行成功後才能獲取 而在 Oracle 數據庫中, order 的值要設置爲 BEFORE ,這是因爲 Oracle中需要先從序列獲取值,然後將值作爲主鍵插入到數據庫中。

<insert id="insertUser1">
        insert into richfit_myku(user_name,user_sex,degree)
        values(
        #{username}, #{usersex}, #{degree})
        <selectKey keyColumn="userid" keyProperty="userid" resultType="int" order="AFTER">
       <!-- MySQL 中的 SQL 語句 SELECT LAST_ INSERT_ ID ()用於獲
數據庫中最後插入的數據的 ID-->
          select LAST_INSERT_ID()
        </selectKey>
    </insert>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章