订单号生成策略

2018-09-11  本文已影响0人  杨少侠_Y

这里提供一个根据日期+数据库自增实现的一个订单号生成策略,也可以使用UUID。
首先建立一个全局的数据表,这里只要一个自增的主键。

package xxx;

import lombok.Data;

import javax.persistence.*;

/**
 * @author lqyang
 * @Title: ${file_name}
 * @date 2018/9/1115:08
 */
@Data
@Entity
@Table(name="erp_order_id_strategy")
public class OrderIDStrategy {

    /**
     * 订单生成ID
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private Long orderId;
}

建立对应的Dao

package xxx;

import xxx.OrderIDStrategy;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import javax.persistence.Id;

/**
 * @author lqyang
 * @Title: ${file_name}
 * @date 2018/9/1115:13
 */
@Repository
public interface OrderIDStrategyDao extends JpaRepository<OrderIDStrategy,Long>{

    @Query(value = "select MAX(a.order_id) from erp_order_id_strategy as a",nativeQuery = true)
    Long findById();
}

编写生成订单号工具类

private static String date ;
 /**
     * 生成订单编号
     * @return
     */
    public static synchronized String getOrderNo(Long orderNum) {
        String str = new SimpleDateFormat("yyMMdd").format(new Date());
        if(date==null||!date.equals(str)){
            date = str;
        }
        long orderNo = Long.parseLong((date)) * 10000;
        orderNo += orderNum;
        return orderNo+"";
    }

每次生成订单号时,只需每次执行insert操作

 orderIDStrategyDao.save(orderIDStrategy);
 orderInfo.setOrderId(StringUtil.getOrderNo(orderIDStrategyDao.findById()))

打完收工。

上一篇下一篇

猜你喜欢

热点阅读