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

    Sequence主键

    实体主键支持Sequence

    • oracle等数据库主键策略配置Sequence
    • GlobalConfig配置KeyGenerator
    1. GlobalConfig conf = new GlobalConfig();
    2. conf.setDbConfig(new GlobalConfig.DbConfig().setKeyGenerator(new OracleKeyGenerator()));
    • mybatis-plus-boot-starter配置参考
    1. @Bean
    2. public OracleKeyGenerator oracleKeyGenerator(){
    3. return new OracleKeyGenerator();
    4. }
    • 实体类配置主键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

    自版本3.2.1开始,此属性废除,无需指定

    也就是说,表的主键是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.正常配置GlobalConfig配置keyGenerator
    1. @Bean
    2. public GlobalConfig globalConfiguration() {
    3. GlobalConfig conf = new GlobalConfig();
    4. conf.setDbConfig(new GlobalConfig.DbConfig().setKeyGenerator(new OracleKeyGenerator()));
    5. return conf;
    6. }