如何在MyBatis-Spring Boot中获取从Oracle触发器创建的ID



我看到了一些类似的问题,但是,我只是无法在代码中获得正确的ID值。它总是在插入后返回1作为ID。

ItemController.java

@Operation(description = "Insert Test")
@PostMapping("/item/add")
@ResponseBody
void upsertTest(
@RequestBody itemForm testForm
) {
Long itemId = itemService.getItemId();
itemForm.setItemId(itemId);

System.out.println("Item ID: " + itemId );
}

ItemService.java

@Service("ItemService")
public class ItemService {
private final ItemDao itemDao;
@Autowired
public ItemService(@Qualifier("itemDao") final ItemDao itemDao) {
this.itemDao = itemDao;
}
public Long getItemId(){
return itemDao.getItemId();
}
}

项目Dao.java

@Component("itemDao")
@Repository
public interface ItemDao {
Long getItemId();
}

ItemDao.xml

<insert id="getItemId" useGeneratedKeys="true" keyProperty="itemId" keyColumn="ITEM_ID">
INSERT INTO ITEM_ID_TABLE (DUMMY) VALUES (null)
</insert>

我的表基本上是2列(ITEM_ID,DUMMY(,并且有一个触发器,可以使用ITEM_ID列上的序列插入ID。

每当我进行插入输出时:

Item ID: 1

即使我已经完成了多次插入

ItemDao.xml中的

尝试如下操作:

<insert id="getItemId" useGeneratedKeys="true" keyProperty="itemId" keyColumn="ITEM_ID">
INSERT INTO ITEM_ID_TABLE (DUMMY) VALUES (null)
<selectKey keyProperty="returnId" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID();
</selectKey>
</insert>

基于这个问题。

相关内容

  • 没有找到相关文章

最新更新