在Spring中用select last_insert_id()時遇到問建站知識
導讀:1建站知識一直使用的Oracle數據庫,通過序列來實現自增字段,插入之前就已經獲得了自增id,保存下來即可在后來的操作中使用網站推廣優化seo如何seo優化推廣網站。
今天在使用MySQL時卻不知如何處理,插入記錄后不知怎樣獲得剛剛插入的id,查過文檔后發現了select last_insert_id(),在插入之后執行此查詢,即可獲得自增id,喜出望外。可用到自己的程序中之后卻得不到想要的結果,于是就懷疑到了Spring頭上,因為通過基本JDBC測試是沒有任何問題的,所以就去跟蹤Spring JDBC, 看過源碼之后才豁然開朗,原來Spring中如此獲得數據庫Connection的:Connection con = DataSourceUtils.getConnection(getDataSource());, 哎,只能怪自己Spring掌握不夠好,所以就不能在執行insert之后去執行select last_insert_id()了,因為select last_insert_id()是真對當前Connection插入和更新操作的,那在Spring中如何獲得新增記錄的鍵值呢,沒有辦法只能去Google了。發現了如下文章,來自IT168,標題為《Spring應用數據主鍵的生成策略盤點》,摘錄如下: 在一般情況下,在新增領域對象后,都需要獲取對應的主鍵值。使用應用層來維護主鍵,在一定程度上有利于程序性能的優化和應用移植性的提高。在采用數據庫自增主鍵的方案里,如果JDBC驅動不能綁定新增記錄對應的主鍵,就需要手工執行查詢語句以獲取對應的主鍵值,對于高并發的系統,這很容易返回錯誤的主鍵。通過帶緩存的DataFiel網站seo優化課程dMaxValueIncrementer,可以一次獲取批量的主鍵值,供多次插入領域對象時使用,它的執行性能是很高的。使用數據庫的自增主鍵 我們經常使用數據的自增字段作為表主鍵,也即主鍵值不在應用層產生,而是在新增記錄時,由數據庫產生。這樣,應用層在保存對象前并不知道對象主鍵值,而必須在保存數據后才能從數據庫中返回主鍵值。在很多情況下,我們需要獲取新對象持久化后的主鍵值。在Hibernate等ORM框架,新對象持久化后,Hibernate會自動將主鍵值綁定到對象上,給程序的開發帶來了很多方便。 在JDBC 3.0規范中,當新增記錄時,允許將數據庫自動產生的主鍵值綁定到Statement或PreparedStatement中。使用Statement時,可以通過以下方法綁定主鍵值:int executeUpdate(String sql,int autoGeneratedKeys)也可以通過Connection創建綁定自增值的PreparedStatement:PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) 當autoGeneratedKeys參數設置為Statement.RETURN_GENERATED_KEYS值時即可綁定數據庫產生的主鍵值,設置為Statement.NO_GENERATED_KEYS時,不綁定主鍵值。下面的代碼演示了Statement綁定并獲取數據庫產生的主鍵值的過程:
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章在Spring中用select last_insert_id()時遇到問建站知識主要講述中用,標簽,在Spring中用select last_ins網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5589.html
- 上一篇:做網站該注意哪些基本要素?建站知識
- 下一篇:Oracle的數據字典技術簡析建站知識