Sequence主键

实体主键支持Sequence @since 2.0.8

  • oracle主键策略配置Sequence

  • GlobalConfiguration配置KeyGenerator

  1. GlobalConfiguration gc = new GlobalConfiguration();
  2. //gc.setDbType("oracle");//不需要这么配置了,自动获取数据库类型
  3. gc.setKeyGenerator(new OracleKeyGenerator());
  1. mybatis-plus:
  2. global-config:
  3. key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
  • 实体类配置主键Sequence,指定主键@TableId(type=IdType.INPUT)//不能使用AUTO
  1. @TableName("TEST_SEQUSER")
  2. @KeySequence("SEQ_TEST")//类注解
  3. public class TestSequser{
  4. @TableId(value = "ID", type = IdType.INPUT)
  5. private Long id;
  6. }
  • 支持父类定义@KeySequence, 子类使用,这样就可以几个表共用一个Sequence
  1. @KeySequence("SEQ_TEST")
  2. public abstract class Parent{
  3. }
  4. public class Child extends Parent{
  5. }

以上步骤就可以使用Sequence当主键了。

Spring MVC:xml配置,请参考【安装集成

如何使用Sequence作为主键,但是实体主键类型是String

也就是说,表的主键是varchar2, 但是需要从sequence中取值

  • 1.实体定义@KeySequence 注解clazz指定类型String.class

  • 2.实体定义主键的类型String

  1. @KeySequence(value = "SEQ_ORACLE_STRING_KEY", clazz = String.class)
  2. public class YourEntity{
  3. @TableId(value = "ID_STR", type = IdType.INPUT)
  4. private String idStr;
  5. ...
  6. }
  • 3.正常配置GlobalConfiguration.keyGenerator
  1. @Bean
  2. public GlobalConfiguration globalConfiguration() {
  3. GlobalConfiguration conf = new GlobalConfiguration();
  4. conf.setKeyGenerator(new OracleKeyGenerator());
  5. return conf;
  6. }