前言
MySQL: 支持主键自增。 IdType.Auto
Oracle: 序列(Sequence)
一、Oracle 主键 Sequence实现步骤
- 实体类配置主键 Sequence @KeySequence(value=”序列名”,clazz=xxx.class 主键属性类型)
//@KeySequence(value="seq_user",clazz=Integer.class)
public class User extends Parent {
//@TableId(type=IdType.INPUT)
private Integer id ;
@TableField(fill=FieldFill.INSERT_UPDATE)
private String name ;
@TableLogic // 逻辑删除属性
private Integer logicFlag ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getLogicFlag() {
return logicFlag;
}
public void setLogicFlag(Integer logicFlag) {
this.logicFlag = logicFlag;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", logicFlag=" + logicFlag + "]";
}
}
- 全局 MP 主键生成策略为 IdType.INPUT
在Spring配置文件中:
<!-- 定义MybatisPlus的全局策略配置-->
<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 在2.3版本以后,dbColumnUnderline 默认值就是true -->
<property name="dbColumnUnderline" value="true"></property>
<!-- Mysql 全局的主键策略 -->
<!-- <property name="idType" value="0"></property> -->
<!-- Oracle全局主键策略 -->
<property name="idType" value="1"></property>
</bean>
- 全局 MP 中配置 Oracle 主键 Sequence
com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
<!-- 配置Oracle主键Sequence -->
<bean id="oracleKeyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"></bean>
<!-- 定义MybatisPlus的全局策略配置-->
<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 在2.3版本以后,dbColumnUnderline 默认值就是true -->
<property name="dbColumnUnderline" value="true"></property>
<!-- Mysql 全局的主键策略 -->
<!-- <property name="idType" value="0"></property> -->
<!-- Oracle全局主键策略 -->
<property name="idType" value="1"></property>
<!-- 全局的表前缀策略配置 -->
<property name="tablePrefix" value="tbl_"></property>
<!-- 注入Oracle主键Sequence -->
<property name="keyGenerator" ref="oracleKeyGenerator"></property>
</bean>
- 可以将@keySequence 定义在父类中,可实现多个子类对应的多个表公用一个 Sequence
@KeySequence(value="seq_user",clazz=Integer.class)
public abstract class Parent {
}
//@KeySequence(value="seq_user",clazz=Integer.class)
public class User extends Parent {
....
}
一、Idea 快速开发插件
MybatisX 辅助 idea 快速开发插件,为效率而生.
可以实现 java 与 xml 跳转,根据 Mapper 接口中的方法自动生成 xml 结构.
官方安装: File -> Settings -> Plugins -> Browse Repositories… 输入 mybatisx 安装下载
Jar 安装: File -> Settings -> Plugins -> Install plugin from disk… 选中 mybatisx…jar 安装