生成訂單流水號的方法


1、生成流水號的工具類

package com.chinairi.mall.util;

import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author gsl
 * @date 2020-11-30 18:11
 */
public class NumberFormatUtil {
    /**
     * 根據規則生成流水號
     *
     * @param numberDigit 流水號的位數
     * @param numberValue 流水號的值
     * @return 流水號的值的字符串信息
     */
    public static String numberFormat(int numberDigit, int numberValue) {
        NumberFormat formatter = NumberFormat.getNumberInstance();
        formatter.setMinimumIntegerDigits(numberDigit);
        formatter.setGroupingUsed(false);
        //日期前綴,這里用的是日期前綴+幾位的流水號
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd");
        String dateString = date.format(new Date());
        return dateString + formatter.format(numberValue);
    }


}

2、調用

//此處生成六位的流水號
String orderId = NumberFormatUtil.numberFormat(6, orderInfoMapper.getOrderNo());

3、DAO層中getOrderNo()方法的SQL

    <select id="getOrderNo" resultType="java.lang.Integer">
    SELECT IFNULL(MAX(CAST(SUBSTR(ORDER_NO,9,LENGTH(ORDER_NO)) AS UNSIGNED INTEGER)),0) + 1
FROM ORDER_TABLE
</select>

4、可改進的地方

我這里沒有按照每天的流水號更新,第二天不會從0開始算數,值得改進


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM