jdbc原生寫法
connection con = null;
preparedstatement pa = null;
resultset rs = null;
con = jdbcutils.getconnection();
ps = con.preparestatement("insert into person(username,password) values(?,?)", preparedstatement.return_generated_keys);
ps.setobject(1,person.getusername());
ps.setobject(2,person.getpassword());
int i = ps.executeupdate();
rs = ps.getgeneratedkeys();
int id = -1;
if(rs.next())
// 主鍵
system.out.println(id);
解析:
一、在構造 preparedstatement 時加上preparedstatement.return_generated_keys,指定需要主鍵回填。
二 、執行更新操作後,呼叫getgeneratedkeys(),返回乙個結果集,從這個游標集可以獲取到剛剛插入主鍵id。
mybatis寫法
方式一:
在insert語句上,新增usegeneratedkeys=「true」 keyproperty=「id」
id="insert" usegeneratedkeys="true" keyproperty="id" parametertype="com.domain.user">
insert into t_user values (#,#,#,#,#)
>
方式二:
利用mysql自帶的last_insert_id()
函式查詢剛剛插入的id
id="insert" parametertype="com.domain.user">
resulttype="integer" order="after" keyproperty="id">
select last_insert_id()
>
insert into t_user values (#,#,#,#,#)
>
結果為:
總結:主鍵回顯常用的有三種方式,這裡推薦mybatis的兩種方式。
利用主鍵回填來獲得主鍵值以便於以後的關聯其他功能。
jdbc中的statement物件在執行插入sql後,可以通過getgenetatedkeys方法來獲得資料庫生成的主鍵。在insert語句中有乙個開關屬性usegeneratedkeys,用來控制是否開啟這乙個功能,它的預設值是false。當開啟了這乙個開關,還要配置其屬性keyproperty,告訴系統把主鍵的值放在哪乙個屬性中,如果存在多個主鍵,可以用","來隔開。
insert into t_role(role_name,note) values(#,#)
insert>
則主鍵的id會對應賦值給這乙個role 的pojo物件。
Mybatis insert方法主鍵回填和自定義
在資料庫插入的時候,有很多屬性需要我們自己處理,如主鍵自增字段。mysql中主鍵根據一定規則生成後,需要我們在插入後去主動獲取,以便後面的操作,mybatis為我們提供了處理的方法。我們可以在xml檔案中進行如下配置 insert into t user user name,age values 這...
MyBatis主鍵回填和自定義主鍵
1.主鍵回填jdbc中的statement物件在執行插入的sql後,可以通過getgeneratedkeys方法獲得資料庫生成的主鍵,這樣便能達到獲取主鍵的功能。在insert語句中,有乙個開關屬性 usegeneratedkeys,用來控制是否開啟這個功能,它的預設值是false。當開啟了這個開關...
Oracle實現主鍵自增長的幾種方式
使用sqlserver mysql時,無論我們使用的是直接jdbc連線資料庫,還是通過hibernate操縱資料庫,我們只需要設定乙個選項或者一行註解便可以實現主鍵的自增長。但oracle沒有直接提供主鍵自增長的功能,這裡我們可以使用兩種方式來解決主鍵自增長的問題。第一種,通過序列以及觸發器實現主鍵...