前言:
Oracle不同于mysql,如果需要设置自增id,网上很多方法是通过触发器来实现,如果为每一张表都设置触发器,显然不合适。通过查找资料发现了一个比较好的方法,只需要建立一个sequence,编写自定义注解即可实现。
步骤:
1.为Oracle数据库表创建sequence,执行sql如下:
create sequence diting_seq start with 1000 increment by 1;
2.编写自定义注解
import org.springframework.stereotype.Component;
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component("mybatisPlusKeyGenerator")
public class MybatisPlusKeyGenerator implements IKeyGenerator {
@Override
public String executeSql(String incrementerName) {
log.info("执行自定义Key生成器,参数:{}",incrementerName);
return "SELECT diting_seq.NEXTVAL FROM DUAL";
}
}
3.在实体类中使用该注解。并且在主键字段中设置@TableId(type=IdType.INPUT)
@Data
@TableName("api_data")
@Component
@KeySequence("mybatisPlusKeyGenerator")
public class ApiDataEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type=IdType.INPUT)
private Long id;
/**
* 文件名
*/
private String fileName;
/**
* json文件
*/
private String jsonFile;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createdTime;
}