java中订单流水号_订单流水号的生成
最近在做项目过程中,经常会遇到生成订单流水号唯一性的应用,也有不少同事也请教我对唯一性的 "流水号"的问题,根据个人所见,一般生成的规则都是根据日期来进行操作,我目前在做的一个项目:”报告卡“上的编码就是根据 ”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中订单流水号_订单流水号的生成相关推荐
- ant java 返回,在Java中直接操作ant回测试和生成测试报告
在Java中直接操作ant来测试和生成测试报告 Ant是大家熟悉的构建工具,一般情况下,大家都是使用build.xml文件来配置使用Ant,这样的Ant已经是十分强大的.但有些怪异的场景需求特殊,你可 ...
- java 中阿拉伯语_电子游戏中的阿拉伯代表
java 中阿拉伯语 表示 (REPRESENTATION) Growing up in the Middle East, video games played a significant role ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
- java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...
本文已经收录自 https://github.com/Snailclimb/JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...
- java中char类型_【考点】JAVA中的char类型
写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...
- java中的缩小_在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?...
Java中的类型转换用于将一种类型的对象或变量转换为另一种类型.当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容.如果合适的话,它将顺利进行,否则会丢失数据. Java中的类型转换类型 ...
- java中避免空指针_在Java中避免空检查
java中避免空指针 对于Java开发人员(从初级到专家)最糟糕的噩梦之一是空对象引用检查. 我很确定您已经看过几次这样的代码: public void addAddressToCustomer(Cu ...
- java中接口文件创建_功能接口简介–在Java 8中重新创建的概念
java中接口文件创建 世界各地的所有Java开发人员都将至少使用以下接口之一:java.lang.Runnable,java.awt.event.ActionListener,java.util.C ...
- =在 java中怎么表示_在Java中各种类型运算符的介绍与其基本使用方式(有具体使用示例)...
一.算数运算符 基本四则运算符 + - * / %(使用规则简单,正常使用即可) 注意事项: a) int/int 结果还是 int 要保留小数需要使用double来计算 int a = 1; int ...
- java中编码问题_[干货预警]一次搞懂Java中的编码问题
编码问题一直是一个困扰程序员的问题,尤其是对于java程序员.因为java的跨平台特性,经常需要在多个编码之间进行转换. 下面详细讲一讲java中的编码问题 一.为什么要编码 长话短说,原因如下: 1 ...
最新文章
- EasyUI 1.3.6 行号显示不全
- CSS3.0_选择器_学习笔记
- baidu收录速度明显慢了
- Winform GDI+
- java程序结构化设计_项目二:基于Java的结构化程序设计
- 电子相册系统(六)相片列表显示
- 在Mac 上更改密码、用户图片或自动登录项
- ubuntu安装mysql失败怎么删除_Ubuntu 14.04卸载安装失败的Mysql数据库,以及重新安装配置...
- 调试Javascript代码(浏览器F12)
- ROS@Ubuntu16.04体验记录
- 路由器的工作原理定义
- 互联网公司裁员还有秘密?我知道了!
- AtCoder Beginner Contest 164 E - Two Currencies
- android源码模块编译错误,【转】Android 源码编译make的错误处理--不错
- 南京微盟最新推出:PD电源六级能效 外推芯片 ME8224AM6G ME8224BM6G SOT23-6
- Android解析服务器Json数据实例
- Linux内核2.6.34.14添加系统调用及编译方法(CentOS-6.4-x86_64)
- pandas处理字符串
- 论文翻译:2021_Low-Delay Speech Enhancement Using Perceptually Motivated Target and Loss
- 用SpringBoot简单实现登录注册功能