Rafy 框架 - 流水号插件

简介:

Rafy 框架又添新成员:流水号插件。本文将解释 Rafy 框架中的流水插件的场景、使用方法。

 

场景


在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下面的格式:2016031800000001、2016031800000002……。

设计本插件用于生成上述相应格式的编号。

 

使用方法


添加插件

1.通过 Nuget Package Manager 搜索并安装 Rafy.SerialNumber 插件。

2.在 DomainApp 中添加该插件;同时,设置该插件所对应的数据库配置名:

class JXCApp : DomainApp
{
    protected override void InitEnvironment()
    {
        //配置插件所对应的数据库配置名。
        Rafy.SerialNumber.SerialNumberPlugin.DbSettingName = "TestDb";

        //添加流水号插件到 Rafy 应用程序集中。
        RafyEnvironment.DomainPlugins.Add(new Rafy.SerialNumber.SerialNumberPlugin());

        base.InitEnvironment();
    }
}
 
使用插件

1.生成数据库。

该插件中自带两个实体:SerialNumberInfo 、SerialNumberValue ,所以 Rafy 会为其在数据库中添加相应的两张表。

2.添加流水号生成规则。

SerialNumberInfo 表示定义的流水号生成规则信息。而 SerialNumberValue 则表示生成的流水号的具体值。所以要生成流水号,必须先为其定义生成规则。可以使用 SerialNumberController 进行简单的每日规则创建,示例如下:

var controller = DomainControllerFactory.Create<SerialNumberController>();
var sni = controller.CreateDailySerialNumberInfo("流水号规则-1");
 

CreateDailySerialNumberInfo 方法内部其实非常简单,开发者可以参考以下代码创建新的生成规则,如下:

/// <summary>
/// 创建一个以日期进行分组生成编号的规则,存储到仓库中,并返回。
/// 性能-仓库访问次数:1。
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public SerialNumberInfo CreateDailySerialNumberInfo(string name, string format = "yyyyMMdd********")
{
    var sni = new SerialNumberInfo
    {
        Name = name,
        TimeGroupFormat = "yyyyMMdd",
        Format = format,
        RollValueStart = 1,
        RollValueStep = 1,
    };

    var infoRepo = RF.Concrete<SerialNumberInfoRepository>();
    infoRepo.Save(sni);

    return sni;
});

 

3.生成流水号。

使用以下代码生成流水号即可:

var next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000001", next);
next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000002", next);
next = controller.GenerateNext(sni);
Assert.AreEqual("2016031800000002", next);

 


本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/p/5291524.html,如需转载请自行联系原作者

相关文章
|
前端开发 Java 关系型数据库
基于springboot的教师科研信息管理系统(含ssm版本)
该系统创作于2022年3月,分为两个版本,springboot和ssm整合,数据库设计详细。数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:教师、科研、论文管理、科研管理等。
基于springboot的教师科研信息管理系统(含ssm版本)
|
域名解析 负载均衡 架构师
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
前面讲了如何配置Nginx虚拟主机、如何配置反向代理。Nginx最主要的功能就是反向代理和负载均衡。今天要说的是如何配置nginx和tomcat实现反向代理。
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
|
8月前
|
存储 人工智能 自然语言处理
海量数据的智能处理及在网盘场景中的应用实践
本次分享主题为海量数据的智能处理及在网盘场景中的应用实践,涵盖面向非结构化数据的多样化处理能力、数据处理智能化演进、企业网盘基于智能媒体管理的应用转型以及智能化和内容结构化能力。通过丰富的AI算子和智能媒体管理,实现图片、音视频等多媒体数据的高效处理,并支持多模态检索、知识库构建与AI助手等功能,助力企业网盘智能化升级,提升用户体验和数据管理效率。
233 7
|
SQL 存储 PHP
PHP中使用SQLite数据库
SQLite是一种轻量级数据库引擎,数据以文件存储,支持SQL操作。PHP可连接SQLite执行CRUD操作。
314 4
|
消息中间件 Java Maven
|
11月前
|
存储 测试技术
探索数据结构:顺序表的实现与应用
探索数据结构:顺序表的实现与应用
114 0
|
SQL 关系型数据库 MySQL
省市区SQL(mysql、postgrel)-接口实现(java)
省市区SQL(mysql、postgrel)-接口实现(java)
985 0
|
监控 前端开发 数据挖掘
PMP题库(四)
PMP题库(四)
648 2
|
网络协议 网络性能优化
VPP二层接口,不是翻墙
VPP二层接口,不是翻墙
|
开发框架 JavaScript 前端开发
推荐一款新框架PyScript:在 HTML 嵌入 Python 代码!
推荐一款新框架PyScript:在 HTML 嵌入 Python 代码!
794 0
推荐一款新框架PyScript:在 HTML 嵌入 Python 代码!

热门文章

最新文章