jeecgboot中如何获取保存后数据的关键字ID

简介: jeecgboot中如何获取保存后数据的关键字ID

  因为日程表添加删除或修改都会涉及到添加到发送定时消息表的数据处理问题,因为不想破坏原有发送消息的统一的sys_sms表内容,所以在日程表添加一个关联的sys_sms消息表ID,那如何获取呢?

 因为这个save实际是用到了mybatisplus里的IService<T>中的

public interface IService<T> {
    /**
     * 默认批次提交数量
     */
    int DEFAULT_BATCH_SIZE = 1000;
    /**
     * 插入一条记录(选择字段,策略插入)
     *
     * @param entity 实体对象
     */
    default boolean save(T entity) {
        return SqlHelper.retBool(getBaseMapper().insert(entity));
    }

mybatisplus对于ID是如何产生的呢?

看public class SysMessage extends JeecgEntity 再继续看

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class JeecgEntity implements Serializable {
  private static final long serialVersionUID = 1L;
  /** ID */
  @TableId(type = IdType.ASSIGN_ID)
  @ApiModelProperty(value = "ID")
  private java.lang.String id;
  /** 创建人 */
  @ApiModelProperty(value = "创建人")
  @Excel(name = "创建人", width = 15)
  private java.lang.String createBy;
  /** 创建时间 */
  @ApiModelProperty(value = "创建时间")
  @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private java.util.Date createTime;
  /** 更新人 */
  @ApiModelProperty(value = "更新人")
  @Excel(name = "更新人", width = 15)
  private java.lang.String updateBy;
  /** 更新时间 */
  @ApiModelProperty(value = "更新时间")
  @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private java.util.Date updateTime;
}

这里可以看到实际上是用到了Mybatis-plus的ASSIGN_ID(雪花算法)

ASSIGN_ID(雪花算法)

如果不设置type值,默认则使用IdType.ASSIGN_ID策略(自 3.3.0 起)。该策略会使用雪花算法自动生成主键 ID,主键类型为 Long 或 String。

雪花算法(SnowFlake)是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的。

使用方法

指定主键生成策略使用雪花算法(默认策略)

当然也可以使用ASSIGN_UUID(不含中划线的UUID)

如果使用 IdType.ASSIGN_UUID 策略,则会自动生成不含中划线的 UUID 作为主键,主键类型为 String

通过下面保存之后,再通过getId来获取保存后的数据ID

@Override
  public String saveSysMessage(SysMessageVo sysMessageVo) {
    SysMessage sysMessage = new SysMessage();
    sysMessage.setEsContent(sysMessageVo.getEsContent());
    sysMessage.setEsReceiver(sysMessageVo.getEsReceiver());
    sysMessage.setEsSendNum(sysMessageVo.getEsSendNum());
    sysMessage.setEsSendStatus(sysMessageVo.getEsSendStatus());
    sysMessage.setEsTitle(sysMessageVo.getEsTitle());
    sysMessage.setEsSendTime(sysMessageVo.getEsSendTime());
    sysMessage.setEsType(sysMessageVo.getEsType());
    
    sysMessageService.save(sysMessage);
      log.info("sysMessage getid="+sysMessage.getId());
      return sysMessage.getId();
  }

注意事项:Mysql 的默认值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,默认值此时失效。使用Mybatis操作也是一样的道理,只要这个实体里面含有这个字段,并且值为null,则不会插入默认值。

相关文章
|
9月前
|
小程序 JavaScript 前端开发
【经验分享】如何获取任意小程序appId及页面路径
【经验分享】如何获取任意小程序appId及页面路径
410 7
|
2月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
87 11
|
7月前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
125 0
|
6月前
|
开发工具 数据安全/隐私保护 Python
【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
|
7月前
|
数据库连接 网络安全 数据库
阿里云云效操作报错合集之接口按迭代ID查询工作项查不到或查询结果不正确,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
7月前
|
SQL 前端开发 Java
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
|
8月前
|
DataWorks 监控 API
DataWorks产品使用合集之在调用API创建质量监控规则中的校验器的ID可以在哪里找到
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
测试技术 API PHP
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
295 0
|
Windows
怎么批量给文件添加拓展名?
怎么批量给文件添加拓展名?
190 0
怎么批量给文件添加拓展名?
阿里巴巴商品详情pachong数据字段解析 源代码分享 调用示例
阿里巴巴商品详情pachong数据字段解析 源代码分享 调用示例