同時將資料插入主表和子表中時。
需求:增加乙個新部門,同時增加乙個該部門的新員工。
思路1:先讓sequence產生nextval並記錄下來,再分別新增主表和子表
這種思路可行,但是需要多訪問一次資料庫,影響效能。
思路2:先插入新部門,然後返回該部門編號,再接著插入員工。
對比思路1有了效能上的優化。
返回該部門編號,就要用到getgeneratedkeys()方法,使用此方法獲取自增資料,效能良好,只需要一次互動。
要想使用該方法,在新建preparedstatement解析sql語句時,就要傳入第二個引數:
乙個string陣列,陣列中記錄的是要generatedkeys記錄的欄位名。
**實現:
public void testgeneratedkeys()); //第二個引數是要獲取的欄位名陣列
ps.setstring(1,"市場部");
ps.setstring(2,"濟南");
ps.executeupdate();
resultset rs = ps.getgeneratedkeys(); //此方法會返回乙個結果集
rs.next(); //呼叫結果集
int deptno = rs.getint(1); //通過列數獲取部門編號。
sql = "insert into emps values(emps_seq.nextval,?,?,?,?,?,?,?)"; //標準流程增加員工。
ps.setstring(1,ename);
ps.setstring(2,job);
ps.setint(3, mgr);
ps.setdate(4, hiredate);
ps.setdouble(5, sal);
ps.setdouble(6, com);
ps.setint(7, deptno);
ps.executeupdate();
con.commit();
}catch(sqlexception e)catch(sqlexception e1)
e.printstacktrace();
throw new runtimeexception("增加部門和員工失敗",e);
}finally
system.out.println("增加成功");
}
Mybatis Plus學習筆記(七) 主鍵策略
本系列部落格其他文章下方鏈結檢視 mybatis plus學習筆記 目錄 mp的主鍵策略定義在列舉類idtype中 資料庫id自增 auto 0 該型別為未設定主鍵型別 none 1 使用者輸入id 該型別可以通過自己註冊自動填充外掛程式進行填充 input 2 以下3種型別 只有當插入物件id 為...
Ibatis (七) 自動生成主鍵
很多資料庫支援自動生成主鍵的資料型別。不過這通常 並不總是 是個私有的特性。sql map通過的子元素來支援自動生成的鍵值。它同時支援預生成 如oracle 和後生成兩種型別 如ms sql server 1.建表,將id設定為主鍵,且需加上auto increment設定為自動增加 create ...
jdbc獲取自動生成的主鍵
在我們設定設計表時,會設定主鍵,自動增長的主鍵 有時候我們插入資料時,要想知道我們生成的主鍵是多少 就比如這個需求場景 現在註冊賬號的前面是挺簡單的,但是後面要填很多資訊,使用者註冊時,新增使用者名稱,密碼後 就插入到資料庫當中 然後就跳轉成完善個人資訊頁 完善資訊更新到剛插入的那個記錄當中,所以要...