microblog | 微博客
原创
访问
0
获赞
0
评论
相关推荐
暂无数据
最新文章
暂无数据
热门文章
暂无数据

IdWorker@getId写进数据库的id和返回给实体的id不相等

写完bug就找女朋友 2023年08月16日 21:49:16 38 1393 1
分类专栏: Mybatis SpringCloud SpringBoot 文章标签: SpringCloud

前言

​ 在使用SpringCloud进行开发的时候,使用mybatis自动生成id,插入到数据库以后并把生成的这些id返回去以供其他使用

一、问题描述

但是发现发现 写入数据库的id和返回给实体的id并不相等,如下所示:

  1. 插入到数据库后返回给实体的id
    image.png

  2. 写入数据库的id
    image.png

  3. 发现他们并不相等
    image.png

  4. xml代码如下

    <insert id="saveColumnList" keyProperty="id">
            INSERT INTO mcb_column(id,user_id, name, status,is_public)
            VALUES
            <foreach collection="list" item="item" separator=",">
            ('${@com.baomidou.mybatisplus.core.toolkit.IdWorker@getId()}',
                 #{item.userId},#{item.name},#{item.status},#{item.isPublic})
            </foreach>
    </insert>
    

    其中的 '${@com.baomidou.mybatisplus.core.toolkit.IdWorker@getId()}' 就是使用IdWorker工具生成分布式id,然而现在出现了问题,并不能满足我们的使用需求,那么该如何解决呢?

二、解决思路

​ 既然可以在xml文件里面调用IdWorker@getId()这个方法生成id,那么我们同样可以在java代码里面调用这个方法生成id,然后把生成的id设置到实体属性里面,然后直接传递过来持久化进入数据库就行了,没有了再返回去给实体的这个过程,就不会出现id不一样这种情况。

三、解决办法

在实例化实体的时候提前调用方法设置好id:

   import com.baomidou.mybatisplus.core.toolkit.IdWorker;//注意导入的报名


    Column column = new Column();
    column.setId(IdWorker.getIdStr(column));//直接调用方法生成id,然后将id设置给实体
    ........//其他操作
        
    //接下来其他操作需要使用这个实体的id的时候就可以直接通过 column.getId() 使用了    


评论区

登录后参与交流、获取后续更新提醒

写完bug就找女朋友
作者
2022年01月13日 11:45:45
目录
暂无数据