当前仓库属于关闭状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 2 Fork 1

王林 / sequence
关闭

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

通用sequence生成器

样例

     PAY-ORDER-20191101-00000001
     PAY-ORDER-20191101-00000002
     PAY-ORDER-20191101-00000003
     PAY-ORDER-20191101-00000004
     PAY-ORDER-20191101-00000005
     PAY-ORDER-20191101-00000006
     PAY-ORDER-20191101-00000007
     PAY-ORDER-20191101-00000008
     PAY-ORDER-20191101-00000009
     PAY-ORDER-20191101-00000010

用户手册

配置项目 语法 说明
表达式 s:字符串
nf:数字格式,参见数字格式定义###00000
df:日期,参见日期格式定义
sequence表达式
生成器数据源 LONG:虚拟机生成器
REDIS:REDIS
DB:数据库生成器
自定义:自定义生成器,参见customSource
重置模式 DAY:按日重置
WEEK:按周重置
MONTH:......
YEAR:......
RING:环形重置,参见MAX
NONE:不重置
STEP 数字:默认1
最小值 数字:默认0
最大值 数字:默认Long.MAX
customSource 自定义生成器

例子

//配置sequence规则,这是一个最大10的环形重置sequencce
     SequenceRule ring1 = new SequenceRule(sequencesService,"ring");
     ring1.s("PAY-ORDER-").df("yyyyMMdd-").nf("00000000",
             Source.Config.builder().cycle(Source.Cycle.RING).max(10L).build()
     );
     sequencesService.register(ring1);
     
//生成sequence    
      for (int i = 0; i < 12; i++) {
                 System.out.println(sequencesService.nextVal("ring"));
      }
             
             
    
    PAY-ORDER-20191101-00000001
    PAY-ORDER-20191101-00000002
    PAY-ORDER-20191101-00000003
    PAY-ORDER-20191101-00000004
    PAY-ORDER-20191101-00000005
    PAY-ORDER-20191101-00000006
    PAY-ORDER-20191101-00000007
    PAY-ORDER-20191101-00000008
    PAY-ORDER-20191101-00000009
    PAY-ORDER-20191101-00000010
    PAY-ORDER-20191101-00000001
    PAY-ORDER-20191101-00000002
    
    //      按日重置的
    SequenceRule day = new SequenceRule(sequencesService,"day");
    day.s("DAY-").df("yyyyMMdd-").nf("######",
            Source.Config.builder().cycle(Source.Cycle.DAY).build()
    );
    sequencesService.register(day);
    
    DAY-20191101-1
    DAY-20191101-2
    DAY-20191101-3
    DAY-20191101-4
    DAY-20191101-5
    DAY-20191101-6
    DAY-20191101-7
    DAY-20191101-8
    DAY-20191101-9
    DAY-20191101-10
    DAY-20191101-11
    DAY-20191101-12
    DAY-20191101-13
    DAY-20191101-14
    DAY-20191101-15
    DAY-20191101-16
    DAY-20191101-17
    DAY-20191101-18
    DAY-20191101-19
    DAY-20191101-20
    DAY-20191101-21
    DAY-20191101-22
    DAY-20191101-23
    DAY-20191101-24
    DAY-20191101-25
    DAY-20191101-26
    DAY-20191101-27
    DAY-20191101-28
    DAY-20191101-29
    DAY-20191101-30
    DAY-20191101-31
    DAY-20191101-32
    DAY-20191101-33
    DAY-20191101-34
    DAY-20191101-35
    DAY-20191101-36
    DAY-20191101-37
    DAY-20191101-38
    DAY-20191101-39
    DAY-20191101-40
    DAY-20191101-41
    DAY-20191101-42
    DAY-20191101-43
    DAY-20191101-44
    DAY-20191101-45
    DAY-20191101-46
    DAY-20191101-47
    DAY-20191101-48
    DAY-20191101-49
    DAY-20191101-50
    DAY-20191101-51
    DAY-20191101-52
    DAY-20191101-53
    DAY-20191101-54
    DAY-20191101-55
    DAY-20191101-56
    DAY-20191101-57
    DAY-20191101-58
    DAY-20191101-59
    DAY-20191101-60
    DAY-20191101-61
    DAY-20191101-62
    DAY-20191101-63
    DAY-20191101-64
    DAY-20191101-65
    DAY-20191101-66
    DAY-20191101-67
    DAY-20191101-68
    DAY-20191101-69
    DAY-20191101-70
    DAY-20191101-71
    DAY-20191101-72
    DAY-20191101-73
    DAY-20191101-74
    DAY-20191101-75
    DAY-20191101-76
    DAY-20191101-77
    DAY-20191101-78
    DAY-20191101-79.。。。。。。

扩展

sequence 源扩展

  • 继承Source接口
  • 在spring中定义bean
  • 使用

@Service("drdsSequenceSource")
public class DrdsSequenceSource implements Source<Long> {
	JdbcTemplate jdbcTemplate;

	public DrdsSequenceSource(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	@Override
	public Long increBy(Config sc) {
		String sql = "SELECT " + sc.sequenceName + ".nextval FROM dual WHERE count = ? ";
		return Long.parseLong(Collections.max(jdbcTemplate.queryForList(sql, new Object[] { sc.step }, String.class)));
	}

	@Override
	public void reset(Config sc) {

	}

	@Override
	public Type type() {
		return Type.DRDS;
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
} 

使用


        //        00000000-00000004 循环
        SequenceRule ring1 = new SequenceRule(sequencesService,"ring");
        ring1.s("PAY-ORDER-").df("yyyyMMdd-").nf("00000000",
                Source.Config.builder().customSource("drdsSequenceSource").max(10L).build()
        );
        sequencesService.register(ring1);

空文件

简介

通用sequence生成器 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/ddddbb/sequence.git
git@gitee.com:ddddbb/sequence.git
ddddbb
sequence
sequence
master

搜索帮助