[英]How to get ID created from Oracle trigger in MyBatis - Spring Boot
我见过几个类似的问题,但是,我无法在我的代码中获得正确的 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 );
}
项目服务.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();
}
}
ItemDao.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。
每当我插入 output 时:
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>
基于这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.