如何在mybatis-spring引导中从oracle触发器创建id

zu0ti5jz  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(294)

我见过几个类似的问题,但是,我就是无法在代码中获得正确的id值。它总是在insert之后返回1作为id。
项目控制器.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();
    }
}

项目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>

我的表基本上是两列(item\u id,dummy),并且有一个触发器,可以使用item\u id列上的序列插入id。
每当我插入时,输出是:

Item ID: 1

即使我已经做了多次插入

4nkexdtk

4nkexdtk1#

在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>

基于这个问题。

相关问题