[英]Java Spring JDBC last_insert_id()
我有一個Web服務和一個數據庫(MySQL),我創建了一個名為batch的表,每次添加一些值(唯一鍵)時,該表必須生成。
CREATE TABLE batch (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(250) NOT NULL
);
這是數據庫表的代碼,這就是我到目前為止編寫的內容:
static final String addBatchIdSql = "INSERT INTO batch" + "(description)" + "VALUES (?)";
static final String getBatchIdSql = "SELECT LAST_INSERT_ID()";
@Override
public int getBatchId() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String batchIDcreation = dateFormat.format(new Date());
jdbcTemplate.update(addBatchIdSql, batchIDcreation);
SqlRowSet rowSet = jdbcTemplate.queryForRowSet(getBatchIdSql);
while (rowSet.next()) {
System.out.println(rowSet.findColumn("id"));
}
return 0;
}
問題是,每次嘗試獲取ID時,它都會引發異常,指出“無效的列名”,我通常檢查了應用程序中的命名屬性,但未發現任何問題,這里可能出了問題://
您可以嘗試將應用程序調用LAST_INSERT_ID()
返回的列作為別名:
static final String getBatchIdSql = "SELECT LAST_INSERT_ID() AS id";
完整代碼:
static final String addBatchIdSql = "INSERT INTO batch" + "(description)" + "VALUES (?)";
static final String getBatchIdSql = "SELECT LAST_INSERT_ID() AS id";
@Override
public int getBatchId() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String batchIDcreation = dateFormat.format(new Date());
jdbcTemplate.update(addBatchIdSql, batchIDcreation);
SqlRowSet rowSet = jdbcTemplate.queryForRowSet(getBatchIdSql);
if (rowSet.next()) {
System.out.println(rowSet.findColumn("id"));
}
return 0;
}
嘗試執行此操作,因為您的ID為自動遞增,因此最后一個插入ID為您的最大ID
static final String getBatchIdSql = "SELECT MAX(id) AS id FROM batch";
總代碼:
static final String addBatchIdSql = "INSERT INTO batch" + "(description)" + "VALUES (?)";
static final String getBatchIdSql = "SELECT MAX(id) AS id FROM batch";
@Override
public int getBatchId() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String batchIDcreation = dateFormat.format(new Date());
jdbcTemplate.update(addBatchIdSql, batchIDcreation);
SqlRowSet rowSet = jdbcTemplate.queryForRowSet(getBatchIdSql);
if (rowSet.next()) {
System.out.println(rowSet.findColumn("id"));
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.