1.需求:第一次生成的订单号为:D0000001,以后的每个新订单编号都累加1;

2.实现思路

当初我也是碰到一个需求里面要用到编号生成,百度看了一下别人的例子,好多都不符合我的需求,于是自己写了俩demo;同时也就发了出来,跟着思路随手写的当然里面还有很多需要优化的地方。

1.直接在数据库写一个自定义函数; 以后要是如果有订单编号取值规则变动的话直接维护函数即可;这种方式对程序的兼容性和扩展性比较好;

-- 创建自定义函数 
create function testNum() returns varchar(50)
begin 
  -- 声明一个变量用来存放输出值
    declare outNumStr varchar(50);
    -- 查询逻辑体
    select concat(left('D0000000',length('D0000000') - length(cast(substr(signNum,2,length(signNum)) as unsigned)+1)),
            cast(substr(signNum,2,length(signNum)) as unsigned)+1) as signNum  
    FROM 你的订单表名 order by createTime desc limit 1 into outNumStr ;
   -- 返回值
     return outNumStr;
end;
/
-- 删除函数
drop function testNum
/
-- 查询函数
select  testNum()

2.第二种相对于第一种来讲比较繁琐一点,利用Java代码进行处理;先利用sql查询出来最大的编号,然后再进入工具类里面进行格式化处理;具体方法如下:

service调用的sql:

/**
     * 编号+1
     * 第一次从D0000001开始;满十向左进位;编号超过7位溢出后异常;
     * 暂未作超出7位处理
     **/
    public String signNum(){

String num =  subscribeService.getMaxElecSignNum();
        String signNum = null;
        String numStr = "D0000000";//初始化计数字符串 
        if(num == null ||"".equals(num)){
            signNum = "D0000001";
        }else{
            Integer maxSignNum =  Integer.parseInt(num);
            maxSignNum = maxSignNum+1;
             signNum =  numStr.substring(0, numStr.length()-maxSignNum.toString().length()).concat(maxSignNum.toString());
        }
        return signNum;
    }

解决订单收据编号的累加问题。格式 D0000001;java+ mysql相关推荐

  1. 基于Django的乐观锁与悲观锁解决订单并发问题的一点浅见

    订单并发这个问题我想大家都是有一定认识的,这里我说一下我的一些浅见,我会尽可能的让大家了解如何解决这类问题. 在解释如何解决订单并发问题之前,需要先了解一下什么是数据库的事务.(我用的是mysql数据 ...

  2. python盘点订单_django解决订单并发问题【推荐】

    并发处理 在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常. 解决办法: 悲观锁 当查询某条记录时,即让数据库为该记录加锁,锁 ...

  3. Sql:成功解决将sql输出的datetime时间格式转为常规格式

    Sql:成功解决将sql输出的datetime时间格式转为常规格式 目录 SQL应用案例 1.将sql输出的datetime时间格式转为常规格式 SQL应用案例 1.将sql输出的datetime时间 ...

  4. 33 MM配置-采购-采购订单-定义凭证层的屏幕格式

    业务背景:定义采购订单凭证层的屏幕格式 事务码: OMH6 SPRO路径:物料管理->采购->采购订单->定义凭证层的屏幕格式 第1步,SPRO进入 第2步,选中"NBF- ...

  5. 解决微信小程序银行卡号输入转换格式

    解决微信小程序银行卡号输入转换格式问题 ps:2017-02-17 19:44 (发现新bug,暂已解决优化中) 新手第一次写博客,请多多见谅! (感觉会有更好的办法,希望有大牛能对我指点指点) 输入 ...

  6. 解决vue项目中prettier、eslint格式冲突问题

    解决vue项目中prettier.eslint格式冲突问题 我是用prettier作为vscode默认的格式化插件的,vue项目自动保存的时候,格式化,会自动在代码末尾添加分号,单引号会自动变成双引号 ...

  7. 土办法解决日期转换问题,转出格式为。。。 贰零壹陆年零壹月零捌日

    /** * 参数名称:@param dateStr 待转换的日期(String格式,结构为yyyy-MM-dd) * 返回值:String 小写汉字的日期 * 方法描述:土办法解决日期转换问题,转出格 ...

  8. abap中 生产订单、销售订单、内部订单各自编号的数据字段类型

    VBAK~VBELN    销售订单号  CHAR  长度10 AUFK~AUFNR   生产订单号  CHAR  长度12 COAS~AUFNR  内部订单号   CHAR  长度12 而且上述三个 ...

  9. C# 收据编号由公司代码+操作员代码+年份+4位流水号

    bool IsExists(string pre) {//判断是否存在收据编号前10位cmmdString = string.Format("select count(*) from rec ...

最新文章

  1. 使用onnx包将pth文件转换为onnx文件
  2. python apscheduler一次只有一个job_Python使用APScheduler实现定时任务过程解析
  3. CompletableFuture详解~thenAcceptBoth
  4. API生态的发展与机遇:从5000组数据看中国API生态与开发者现状
  5. 都说如果朋友都是有钱人,你也会更容易发财
  6. 【云周刊】第173期:直击数博|阿里胡晓明:用100亿的投入撬动1000亿的脱贫效应...
  7. Oracle11g创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题
  8. python基础:字符串操作
  9. vos3000 2009 3000 4.0-8.0客户端下载
  10. solidworks验证许可闪退_彻底解决SolidWorks“无法获得下列许可 SOLIDWORKS Standard”的激活错误...
  11. 排序系列(代码c++版)
  12. javaWeb通过servlet实现注册登陆
  13. 澎思智慧社区解决方案:“人像+ReID行人再识别”算法融合机制开发新一代智慧社区平台 |百万人学AI评选
  14. 定制材料 Pd基聚多巴胺包裹碳纳米管/Fe或Cr单原子链填充Cu纳米管/Fe@CuNT和Cr@CuNT复合结构/氧化钼包裹碳纳米管纳米复合纤维
  15. oracle税务运维脚本练习,荣欣Linux运维+Oracle DBA初级+高级全套实战训练
  16. WTO框架下经济结构调整和产业升级
  17. Python实现随机游走详细解释
  18. Xamarin 打开相机 选择系统照片并上传服务器
  19. 测试工程师如何帮助开发域的质量变好
  20. 赛前注意事项+客观题~~~

热门文章

  1. 威廉·维克瑞 和 拍卖
  2. 链路层典型协议(简述)
  3. 公司股权质押办理哪些手续
  4. java poi读取word 2003, 2007文档
  5. java编写2048小游戏
  6. 2022年R2移动式压力容器充装考试试题及答案
  7. RTKLIB中利用Kalman滤波进行伪距单点定位
  8. 使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
  9. Leetcode.617 合并二叉树
  10. 五一劳动节 甩开压力“嗨”起来