Mybatis-Plus自定义sql如何添加id
南江烂柯人 JAVA劝退师

一直使用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生成策略
  • 本文标题:Mybatis-Plus自定义sql如何添加id
  • 本文作者:南江烂柯人
  • 创建时间:2024-04-12 15:32:09
  • 本文链接:https://www.mattjia.com/2024/04/12/java/Mybatis-Plus自定义sql如何添加id/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论