最近在做项目过程中,经常会遇到生成订单流水号唯一性的应用,也有不少同事也请教我对唯一性的 "流水号"的问题,根据个人所见,一般生成的规则都是根据日期来进行操作,我目前在做的一个项目:”报告卡“上的编码就是根据 ”yyyyMMdd+四位数字(累加)“的格式生成,一般对这一类的操作最好是在存储过程中生成。

下面,我们来简单的举两种方法来生成订单流水号的唯一性:

(1)通过存储过程方式生成(以Oracle为例)

Create Or Replace Procedure MyProcedure

{

CV_1 OUT NVARCHAR2

}

AS

BEGIN

DECLARE

V_CURRENTCODE NVARCHAR2(100)

BEGIN

SELECT MAX([编码字段名]) INTO V_CURRENTCODE FROM [表名];

IF substr(V_CURRENTCODE,8) = to_char(sysdate,'yyyymmdd') THEN

SELECT

CAST(

CAST(nvl(Max(substr([编码字段名] , 0 ,8)),0) AS nvarchar2(30)) || CAST(nvl(Max(substr([编码字段名] , 9 ,4)),0) AS nvarchar2(30))

AS INT)+1

AS [编码字段名]

INTO CV_1

FROM [表名]

dbms_output.put_line(CV_1);

ELSE

SELECT DISTINCT(to_char(sysdate,'yyyymmdd')|| '0001') as [编码字段名] into CV_1 from dual ;

dbms_output.put_line(CV_1);

END IF;

END;

至于调用存储过程我这里就不举例子了,微软有专门提供访问数据层中存在调用 ”存储过程“的方法。

(2)通过程序代码方式生成

///

/// 生成流水号

///

public class OrderHelper

{

///

/// 帮助类

///

private OrderHelper() { }

///

/// 生成订单编号

/// 生成规则yyyyMMdd+四位数字

///

///

public static string GetOrderCode(string code)

{

if (string.IsNullOrWhiteSpace(code)) return string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMdd"), "0001");

if (code.TrimEnd().Length <= 11 || code.TrimEnd().Length >= 13) return "当前编码规则不正确!";

if (code.Substring(0, 8) == DateTime.Now.ToString("yyyyMMdd").TrimEnd())

{

if (Convert.ToInt32(code.Substring(9, 4)) >= 9999) return "当前编码规则已最大值,联系管理员扩大存储容量!";

return string.Format("{0}{1}", code.Substring(0, 8), (Convert.ToInt32(code.Substring(9, 4)) + 1).ToString());

}

else

return string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMdd"), "0001");

}

}

只需调用静态方法即可返回编码。

本文章是新注册用户的第一篇文章,有不足之处,请留言赐教。。。

A Young idler  ~  an old beggar!

java中订单流水号_订单流水号的生成相关推荐

  1. ant java 返回,在Java中直接操作ant回测试和生成测试报告

    在Java中直接操作ant来测试和生成测试报告 Ant是大家熟悉的构建工具,一般情况下,大家都是使用build.xml文件来配置使用Ant,这样的Ant已经是十分强大的.但有些怪异的场景需求特殊,你可 ...

  2. java 中阿拉伯语_电子游戏中的阿拉伯代表

    java 中阿拉伯语 表示 (REPRESENTATION) Growing up in the Middle East, video games played a significant role ...

  3. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  4. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  5. java中char类型_【考点】JAVA中的char类型

    写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...

  6. java中的缩小_在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?...

    Java中的类型转换用于将一种类型的对象或变量转换为另一种类型.当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容.如果合适的话,它将顺利进行,否则会丢失数据. Java中的类型转换类型 ...

  7. java中避免空指针_在Java中避免空检查

    java中避免空指针 对于Java开发人员(从初级到专家)最糟糕的噩梦之一是空对象引用检查. 我很确定您已经看过几次这样的代码: public void addAddressToCustomer(Cu ...

  8. java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

    java中接口文件创建 世界各地的所有Java开发人员都将至少使用以下接口之一:java.lang.Runnable,java.awt.event.ActionListener,java.util.C ...

  9. =在 java中怎么表示_在Java中各种类型运算符的介绍与其基本使用方式(有具体使用示例)...

    一.算数运算符 基本四则运算符 + - * / %(使用规则简单,正常使用即可) 注意事项: a) int/int 结果还是 int 要保留小数需要使用double来计算 int a = 1; int ...

  10. java中编码问题_[干货预警]一次搞懂Java中的编码问题

    编码问题一直是一个困扰程序员的问题,尤其是对于java程序员.因为java的跨平台特性,经常需要在多个编码之间进行转换. 下面详细讲一讲java中的编码问题 一.为什么要编码 长话短说,原因如下: 1 ...

最新文章

  1. EasyUI 1.3.6 行号显示不全
  2. CSS3.0_选择器_学习笔记
  3. baidu收录速度明显慢了
  4. Winform GDI+
  5. java程序结构化设计_项目二:基于Java的结构化程序设计
  6. 电子相册系统(六)相片列表显示
  7. 在Mac 上更改密码、用户图片或自动登录项
  8. ubuntu安装mysql失败怎么删除_Ubuntu 14.04卸载安装失败的Mysql数据库,以及重新安装配置...
  9. 调试Javascript代码(浏览器F12)
  10. ROS@Ubuntu16.04体验记录
  11. 路由器的工作原理定义
  12. 互联网公司裁员还有秘密?我知道了!
  13. AtCoder Beginner Contest 164 E - Two Currencies
  14. android源码模块编译错误,【转】Android 源码编译make的错误处理--不错
  15. 南京微盟最新推出:PD电源六级能效 外推芯片 ME8224AM6G ME8224BM6G SOT23-6
  16. Android解析服务器Json数据实例
  17. Linux内核2.6.34.14添加系统调用及编译方法(CentOS-6.4-x86_64)
  18. pandas处理字符串
  19. 论文翻译:2021_Low-Delay Speech Enhancement Using Perceptually Motivated Target and Loss
  20. 用SpringBoot简单实现登录注册功能

热门文章

  1. 趋势科技发文挑衅VB100 金山对此不以为然
  2. JAVA办公管理系统(OA)
  3. 十分钟搞清字符集和字符编码
  4. [DFB] dfb 对图形的renderto
  5. 从“断臂求生”到一骑绝尘,航运巨头马士基如何利用区块链技术力挽狂澜?
  6. 【计算机网络】常用网络命令
  7. Struts2拦截器-MethodFilterInterceptor
  8. 人脸数据清洗方法+代码汇总
  9. 医院信息系统(HIS系统)如何接入短信/语音功能
  10. OSX: Mac不睡眠的排查