mybatis的insert語句獲取自增id的方法(mySQL)
前提是資料庫表裡已經把id欄位設定成了自增的
javabean的定義是這樣的:
package test; import java.util.Date; public class Express { private int id; private String orderId; private Date deliveryDate; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this.orderId = orderId; } public Date getDeliveryDate() { return deliveryDate; } public void setDeliveryDate(Date deliveryDate) { this.deliveryDate = deliveryDate; } }
DAO層的insert方法是這樣的:
public int add(@Param("entity")Express express);
@Param("entity")是給引數express起的名字,mybatis的mapper.xml會使用這個名字mybatis的mapper.xml裡的add定義是這樣的:
<!-- 插入記錄 --> <insert id="add" parameterType="Object" useGeneratedKeys="true" keyProperty="entity.id" keyColumn="id"> insert into express(order_id,delivery_date) values(#{entity.orderId},#{entity.deliveryDate}) </insert>
當我們定義了一個express物件,然後呼叫
dao.add(express);
插入資料庫成功後mybatis就會把插入的id賦值給這個express物件,後面就可以用express.getId()來獲取這個id了
注意:
1,mapper.xml裡面的keyProperty必須定義為entity.id而不是id,否則在呼叫dao.add(express)的時候會報錯:
因為add方法傳入的引數叫做entity,mybatis並不認識entity裡的id欄位。Caused by: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [param1, entity] at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:165) ~[mybatis-3.2.7.jar:3.2.7] at org.apache.ibatis.reflection.wrapper.MapWrapper.getSetterType(MapWrapper.java:79) ~[mybatis-3.2.7.jar:3.2.7] at org.apache.ibatis.reflection.MetaObject.getSetterType(MetaObject.java:91) ~[mybatis-3.2.7.jar:3.2.7] at org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator.getTypeHandlers(Jdbc3KeyGenerator.java:82) ~[mybatis-3.2.7.jar:3.2.7] at org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator.processBatch(Jdbc3KeyGenerator.java:61) ~[mybatis-3.2.7.jar:3.2.7] ... 97 common frames omitted
2,public int add(@Param("entity")Express express);這個方法的int型別返回值指的是insert成功的資料條數,而不是mybatis返回的新增id。也就是說,在上面的例子中,只要insert成功,方法的返回值永遠是1。
相關推薦
mybatis的insert語句獲取自增id的方法(mySQL)
前提是資料庫表裡已經把id欄位設定成了自增的javabean的定義是這樣的:package test; import java.util.Date; public class Express { private int id; private String order
mybatis的insert插入後獲取自增id詳解(從controller到mapper)
需求說明:當執行插入操作的時候,其中資料包含兩個模組,分別存放在兩種資料庫表中,拿表A,表B來說。 表A為基本資訊表,其中插入時候有自增id,也就是每新增一條資料後下一個id都會自動加1。 表B為詳情表,其中有個欄位為A_id與A表中的id是一樣的,也就是他們的關聯欄位。 那麼問
Mybatis下insert語句後獲取自增id
目前專案是一個公司平臺的專案重構,專案原來的設計很多不必要。但是也會用到。之前遇到了這種insert後需要知道自增id。然後根據自增id還要去關聯表插入一條資料。我是很不支援這樣的。但是原有設計如此。而且是第二次遇到,第一次沒有記,這次記下來,目前我只負責訂單系
mysql獲取自增id最大值四種方法
1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函式 LAST_INSERT_ID 是與table無關的,如果向表a插入資料後,再向表b插入資料,LAST_INSERT_ID會改變。 在多使用者交替插入資料的情況下max(id)顯然不能用
MyBatis 批量插入獲取自增 id 問題解決
插入 lis foreach myba 如果 .cn bsp collect images 問題: 通過 MyBatis 進行批量插入時,如果我們想獲取插入對象所對應的主鍵 id,做法是直接在 <insert> 標簽中直接加入 useGeneratedKeys
mybatis 在oracle資料庫中插入資料時獲取自增ID sequence序列
在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係。 Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE許可權。 建立語句如下: CREATE SEQUEN
oracle資料庫在mybatis框架中獲取自增id
oracle資料庫獲取自增id的方法與mysql不一樣,後者通過設定useGeneratedKeys和keyProperty即可實現。 但是oralce資料庫自增是通過自定義的sequence佇列。所以方法上有所不同。 自增佇列: create or replace t
mybatis查詢語句獲取自增主鍵
第一種方式: 主鍵回填useGeneratedKeys 代表採用JDBC的Statment物件的getGeneratedKeys方法返回主鍵keyProperty 代表將用哪個POJO的屬性去匹配這個主鍵 <!-- 插入記錄 --><insert id="insert" parameterT
tp5 save()儲存後,獲取自增ID,獲取關聯表中的某值
用過tp5的小夥伴們都知道用save方法新增資料返回的是寫入的記錄數。 但是專案中常常遇到在儲存成功資料後也要獲取這條資料的主鍵id,以方便存到其他表裡用作關聯需要,下面是程式碼示例: //向user表中儲存一條資料 $data = [ 'username'=>'ceshi',
spring jpa 獲取自增id
1.為實體類的id註解 @GeneratedValue(strategy=GenerationType.IDENTITY) 指定id的生成策略 @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
Entity Framework新增記錄時獲取自增ID值
與Entity Framework相伴的日子痛並快樂著。今天和大家分享一下一個快樂,兩個痛苦。 先說快樂的吧。Entity Framework在將資料插入資料庫時,如果主鍵欄位是自增標識列,會將該自增值返回給實體物件對應的屬性。 比如下面新增部落格隨筆至資料庫的示例程
關於mybatis插入時如何獲取自增id
一般mybatis插入的話不像hibernate會返回像mysql或者sql server這些關係資料庫中的自增id,那該怎麼樣才能從插入時返回資料庫中的自增id呢?其實mybatis已經為我們做了這樣一個設定,只需要在寫插入語句定義好返回主鍵id對應傳入的java物件中的
mybatis 在oracle資料庫中插入資料時獲取自增ID
就是建立一個SEQUENCE,通過它來獲取自增ID ① 在資料庫中操作: CREATE SEQUENCE CONFIG_KEYWORD_GATHER_SEQ;在XXXMapper.xml中程式碼:&l
mybatis 在oracle資料庫中插入資料時獲取自增ID sequence序列
在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係。 Create Sequence 首先要有CREATE SEQUENCE或者CREATE
jdbc新增以後獲取自增id
Integer enterInfoId = null;insert into Tbl_Xz_PersonalInformation(name,locationArea,phone,flag) values('"+user.getRealname()+"',"+user.get
.NET 分散式自增Id元件(解決自動分配機器Id、時間回撥問題)
目錄 簡介 產生背景 使用方式 原始版 完美版 測試 結尾 簡介 IdHelper是一個.NET(支援.NET45+或.NET Standard2+)生成分散式趨勢自增Id元件,有兩個版本:原始版為基於雪花Id(不瞭解請自行百度)方案,需要手動管理設定WorkerId;完美版在原始版的基礎上使用Zoo
獲取IWebBrowser2指標的方法(二)
在Internet Explorer程式設計中,獲取WebBrowser指標通常是一件很重要的事情,因為有了WebBrowser指標,我們就有了對IE完整的控制權。我們 就可以對IE瀏覽器為所欲為了,想幹什麼都可以。比方說獲取或者設定DOM控制元件的值。呼叫頁面中的Jav
SQL語句常見優化十大案例(MySQL)
1、慢SQL消耗了70%~90%的資料庫CPU資源; 2、SQL語句獨立於程式設計邏輯,相對於對程式原始碼的優化,對SQL語句的優化在時間成本和風險上的代價都很低; 3、SQL語句可以有不同的寫法; 下面是我總結的一些SQL常見的優化方法,每個案例都簡單易懂,在開發過程
獲取mysql 自增id 和mysql 下一個自增id的方法
mysql獲取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 獲取的是表中最大的id;順序執行 insert ---> delete 插入的資料----> select MAX(id) from tablenam
MySQL 自增ID值 獲取的方法
如何獲取 MYSQL中某個表的自增ID欄位的下一個值 ? 方法一: 例如:在zx_ofc.task_order表中task_id是自增欄位。 它的下一個自增欄位可以通過下面的語句獲得 SELECT