引用地址:https://blog.csdn.net/qq_49809417/article/details/137824729
本文介绍了如何在Oracle11g环境下使用Mybatis-Plus框架实现主键自增,包括引入依赖、配置分页插件和主键生成器,以及在实体类中设置自增序列。
摘要由CSDN通过智能技术生成
使用mybatis-plus实现Oracle主键自增
这里使用 Mybatis-Plus 框架的自增序列实现oracle主键自增
当然如果 Oracle版本≥12c 的可使用数据库新特性实现主键自增, 我这里的oracle数据库使用版本为11g没办法使用新特性
第一步: 引入依赖
<properties>
<mybatis.plus.version>3.3.1</mybatis.plus.version>
</properties>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
第二步: 添加配置类文件
@Configuration
public class MybatisPlusConfig {
/**
* PageHalper 分页插件
* @return
*/
@Bean
public PageInterceptor pageInterceptor() {
PageInterceptor pageInterceptor = new PageInterceptor();
Properties properties = new Properties();
//允许在运行时根据多数据源自动识别对应方言的分页
properties.setProperty("autoRuntimeDialect", "TRUE");
pageInterceptor.setProperties(properties);
return pageInterceptor;
}
/**
* oracle 主键生成器
*/
@Bean
public IKeyGenerator oracleKeyGenerator() {
return new OracleKeyGenerator();
}
}
第三步: 实体类添加
@Date
@KeySequence(value = "SEQ_USER_INFO", clazz = Long.class)//clazz = Long.class 跟主键类型保持一致
public class UserInfo {
@TableId(value = "USER_ID", type = IdType.INPUT)
@ApiModelProperty(value = "用户ID")
private Long userId;
@TableFiled("USER_NAME")
@ApiModelProperty(value = "账号")
private String userName;
@TableFiled("NICK_NAME")
@ApiModelProperty(value = "昵称")
private String nickName;
@TableFiled("PASSWORD")
@ApiModelProperty(value = "密码")
private String password;
@TableField("DEPT_ID")
@ApiModelProperty(value = "部门编号")
private String deptId;
@TableField("ROLE_ID")
@ApiModelProperty(value = "角色编号")
private Integer roleId;
@TableFiled("CREATE_TIME")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@TableFiled("UPDATE_TIME")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
第四步: 给对象创建序列
(自增序列 -> 初始值需根据数据库 当前表中最大id+1 设置, 序列名最好统一为: SEQ_+表名)
举例: 列如当前 USER_INFO 表中主键的最大id为 50, 那么 start with 51
create sequence SEQ_USER_INFO
increment by 1 --每次+1
start with 1 --从1开始
nomaxvalue --不限最大值
nominvalue --不限最小值
cache 20; --设置取值缓存数为20(并发小的服务可不设置该参数)