IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Mybatis-Plus自定义sql如何添加id

    John Doe发表于 2024-04-12 07:35:41
    love 0

    一直使用Mybatis-Plus,但是自定义sql时,发现没有id,所以记录一下

    我有一个需求是需要在inser数据的时候检查是否存在,存在就更新数据,不存在就插入数据,所以自己写了一个upsert语句如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <insert id="insertOrUpdateNewsBody" parameterType="com.easy.dataCenter.bean.pojo.AiNewsBody"
    useGeneratedKeys="true">
    INSERT INTO `test` (`id`,`news_id`, `news_publish_time`, `news_publish_site`,`news_title`, `news_body`,
    `quota`, `news_message_id`,`news_store_time`, `create_time`)
    VALUES (
    ${@com.baomidou.mybatisplus.core.toolkit.IdWorker@getId()},
    #{newsBody.newsId},
    #{newsBody.newsPublishTime},
    #{newsBody.newsPublishSite},
    #{newsBody.newsTitle},
    #{newsBody.newsBody},
    #{newsBody.quota},
    #{newsBody.newsMessageId},
    #{newsBody.newsStoreTime},
    #{newsBody.createTime})
    ON DUPLICATE KEY UPDATE
    <if test="newsBody.newsPublishTime != null and newsBody.newsPublishTime != ''">
    `news_publish_time` = #{newsBody.newsPublishTime},
    </if>
    <if test="newsBody.newsPublishSite != null and newsBody.newsPublishSite != ''">
    `news_publish_site` = #{newsBody.newsPublishSite},
    </if>
    <if test="newsBody.newsTitle != null and newsBody.newsTitle != ''">
    `news_title` = #{newsBody.newsTitle},
    </if>
    <if test="newsBody.newsBody != null and newsBody.newsBody != ''">
    `news_body`=#{newsBody.newsBody},
    </if>
    <if test="newsBody.quota != null and newsBody.quota != ''">
    `quota` = #{newsBody.quota}
    </if>
    </insert>

    因为这里需要使用到id,所以需要自己生成id,但是发现生成的id是0,所以需要修改一下,修改如下:

    使用  ${@com.baomidou.mybatisplus.core.toolkit.IdWorker@getId()} 来代替id字段的值,这样就实现了使用mybatis-plus自带的id生成策略


沪ICP备19023445号-2号
友情链接