主鍵回填的幾種方式

2022-01-21 11:38:45 字數 1704 閱讀 3212

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沒有直接提供主鍵自增長的功能,這裡我們可以使用兩種方式來解決主鍵自增長的問題。第一種,通過序列以及觸發器實現主鍵...