java自动生成编号的实现(格式:yyMM+四位流水号)

Java自动生成编号的实现,通常需要考虑到以下几个方面:

  1. 记录上一个流水号。
  2. 根据当前时间生成编号的前缀(yyMM)。
  3. 每次生成编号时自增流水号,如果流水号超出限定位数则将其归零并增加前缀的年月数。
  4. 将新编号保存在数据库中。

下面是一个完整的代码示例和实现攻略。

1. 定义实体类

首先定义一个实体类,包含自动生成编号所需的属性和setter/getter方法。

public class Order {
    private String orderNo; // 订单编号
    private Date orderDate; // 订单日期

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Date getOrderDate() {
        return orderDate;
    }

    public void setOrderDate(Date orderDate) {
        this.orderDate = orderDate;
    }
}

2. 实现自动生成编号的方法

接下来是生成编号的方法实现。生成规则为:当前时间的年月(yyMM) + 流水号(四位数,不足四位数补0)。

public class OrderUtils {
    public static String getNewOrderNo() {
        String prefix = new SimpleDateFormat("yyMM").format(new Date()); // 生成前缀yyMM
        String maxOrderNo = orderDAO.findMaxOrderNo(prefix); // 获取当前最大的订单号
        String newOrderNo = null;
        if (maxOrderNo != null) {
            String no = maxOrderNo.substring(4); // 获取流水号并自增
            int num = Integer.parseInt(no) + 1;
            newOrderNo = prefix + String.format("%04d", num); // 格式化流水号
        } else {
            newOrderNo = prefix + "0001"; // 如果当前没有订单,从0001开始自增
        }
        return newOrderNo;
    }
}

在这个方法中,我们首先生成了订单号前缀,然后调用orderDAO.findMaxOrderNo(prefix)获取该前缀下最大的订单号。如果数据库中有该前缀的订单号,则从中取出流水号,自增后格式化为四位数字,再和前缀拼接成新的订单号。如果没有订单号,则直接以“0001”作为流水号拼接到前缀后面。

3. 数据库保存新的数据

在生成了新的订单编号后,我们需要将新的订单保存到数据库中。这可以在调用生成编号方法之后直接进行。

public class OrderService {
    public void generateNewOrder() {
        Order order = new Order();
        order.setOrderNo(OrderUtils.getNewOrderNo()); // 设置生成的订单编号
        order.setOrderDate(new Date()); // 设置订单日期
        orderDAO.save(order); // 保存订单信息到数据库
    }
}

调用OrderUtils.getNewOrderNo()获取新的订单号,然后设置到订单实体类中,随后将该实体类插入到数据库中。

4. 示例说明

设当前日期为2022年10月10日,根据yyMM+四位流水号的规则生成的订单编号应该是"2210 0001"。如果此前已经有了该规则的订单编号"2210 0002",则生成后的编号应该是"2210 0003"。

public class Main {
    public static void main(String[] args) {
        OrderUtils orderUtils = new OrderUtils();
        System.out.println(orderUtils.getNewOrderNo()); // 输出崭新的订单编号
        OrderService orderService = new OrderService();
        orderService.generateNewOrder(); // 将生成新的订单保存到数据库中
    }
}

综上所述,这就是Java自动生成编号的实现攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java自动生成编号的实现(格式:yyMM+四位流水号) - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • spring boot配置MySQL数据库连接、Hikari连接池和Mybatis的简单配置方法

    下面是详细的攻略: 1. 准备工作 在开始配置之前,我们需要先确保以下的几个准备工作已经完成: 安装好 JDK 和 MySQL 数据库,并且配置好相关环境变量。 在本地搭建好 Spring Boot 项目。 引入以下相关依赖到项目的 pom.xml 文件中: <dependency> <groupId>org.springframew…

    Java 2023年5月20日
    00
  • Java前后端分离的在线点餐系统实现详解

    让我来为您详细讲解“Java前后端分离的在线点餐系统实现详解”的完整攻略。 一、实现方案 该在线点餐系统基于前后端分离架构实现,前端使用Vue.js框架,后端使用Spring Boot框架进行开发。 前端主要包含登录注册、菜单展示、下单、支付等功能,使用Vue.js作为开发框架,采用Vue Router进行页面路由控制,使用Vuex进行状态管理。 后端主要包…

    Java 2023年5月24日
    00
  • Java将excel中的数据导入到mysql中

    下面我将详细讲解“Java将excel中的数据导入到mysql中”的完整攻略。本攻略总体流程分为三步:读取Excel数据、连接MySQL数据库、将数据导入到数据库中。具体过程如下: 1. 读取Excel数据 首先需要使用Java中的一些类库来读取Excel表格数据。在这里我们使用Apache POI类库,它能够帮助我们读取和操作Excel表格文件。 代码示例…

    Java 2023年6月1日
    00
  • Java日期时间类(Date、DateFormat、Calendar)解析

    下面是Java日期时间类解析攻略: Java日期时间类(Date、DateFormat、Calendar)解析 1. Date类 java.util.Date类是Java中处理日期和时间的类,它表示一个特定的瞬间,精确到毫秒。可以使用其无参构造函数来获取当前系统时间。 1.1 Date类常用方法 Date类常用的方法如下: getTime():返回自 197…

    Java 2023年5月20日
    00
  • spring boot 2.x静态资源会被拦截器拦截的原因分析及解决

    在Spring Boot 2.x版本中,静态资源默认会被拦截器拦截,这是因为Spring Boot引入了WebMvcConfigurerAdapter类,该类覆盖了addResourceHandlers方法,将/**路径下的所有请求都拦截了,并尝试寻找相应的静态资源。 要解决这个问题,需要在自己的项目中进行一些配置。 首先,在项目的配置文件applicati…

    Java 2023年6月3日
    00
  • Kafka Producer中的消息缓存模型图解详解

    以下是关于“Kafka Producer中的消息缓存模型图解详解”的完整攻略: Kafka Producer中的消息缓存模型图解详解 什么是Kafka Producer? Kafka是目前人气逐渐上升的一个分布式流媒体平台,其中包括Kafka Producer、Kafka Consumer、Kafka Connect、Kafka Streams和Kafka …

    Java 2023年5月20日
    00
  • 微信小程序 开发中遇到问题总结

    微信小程序开发中遇到问题总结 问题1:如何进行页面跳转? 在小程序的开发过程中,我们经常需要从一个页面跳转到另一个页面。这时候,我们可以使用wx.navigateTo和wx.redirectTo这两个API来实现。wx.navigateTo会保留当前页面,而wx.redirectTo则会关闭当前页面并跳转到目标页面。 示例代码如下: // pages/ind…

    Java 2023年5月23日
    00
  • 深入了解Java中Synchronized的各种使用方法

    深入了解Java中Synchronized的各种使用方法 在 Java 中,Synchronized 是一种保证多线程访问同一个共享资源时,只有一个线程可以进入代码块,从而保证线程安全的关键字。这篇文章将深入讲解 Java 中 Synchronized 的各种使用方法,例如对象锁、类锁和非阻塞同步等。 对象锁 对象锁是指用 Synchronized 关键字修…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部