mysql 指定类型和指定位数创建序列号

在这里插入图片描述

文章目录

          • 一、脚本部分
            • 1. 表结构
            • 2. 函数
          • 二、代码部分
            • 2.1. xml
            • 2.2. 接口
            • 2.3. api接口
            • 2.4. api实例
            • 2.5. 控制层
          • 三、测试
            • 3.1. 效果图

一、脚本部分
1. 表结构

有注释

CREATE TABLE `ldmaxno` (`notype` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '号码类型',`nolimit` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '号码限制条件',`maxno` int NOT NULL COMMENT '当前最大值',PRIMARY KEY (`notype`,`nolimit`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT COMMENT='流水号编码表';

无注释

CREATE TABLE `ldmaxno` (`notype` varchar(60) NOT NULL,`nolimit` varchar(60) NOT NULL,`maxno` int(11) NOT NULL,PRIMARY KEY (`notype`,`nolimit`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
2. 函数
CREATE DEFINER=`root`@`localhost` FUNCTION `CreateMaxNo`(cNoType VARCHAR ( 60 ),cNoLimit VARCHAR ( 60 )) RETURNS int(11)
BEGINDECLAREtMaxNo INTEGER DEFAULT 0; -- 初始化赋值等于0,SET tMaxNo = ( SELECT MaxNo FROM LDMaxNo WHERE NoType = cNoType AND NoLimit = cNoLimit FOR UPDATE );IFisnull( tMaxNo ) = 1 THENINSERT INTO LDMaxNo ( NOTYPE, NOLIMIT, MAXNO )VALUES( cNoType, cNoLimit, 1 );SET tMaxNo = 1;ELSE SET tMaxNo = tMaxNo + 1;UPDATE LDMaxNo SET MaxNo = tMaxNo WHERENoType = cNoType AND NoLimit = cNoLimit;END IF;RETURN tMaxNo;END
二、代码部分
2.1. xml

DullMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gblfy.business.mapper.DullMapper"><select id="getMaxNo" resultType="java.lang.String">select createmaxno(#{cNoType},#{cNoLength}) from dual</select>
</mapper>
2.2. 接口

DullMapper.java

package com.gblfy.business.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;public interface DullMapper extends BaseMapper {/*** 功能:产生指定长度的流水号,一个号码类型一个流水* @param cNoType 流水号的类型* @param cNoLength 流水号的长度* @return 返回产生的流水号码*/String getMaxNo(@Param("cNoType") String cNoType, @Param("cNoLength") int cNoLength);
}
2.3. api接口
package com.gblfy.business.service;public interface SysMaxNoService {/*** 功能:产生指定长度的流水号,一个号码类型一个流水** @param cNoType   流水号的类型* @param cNoLength 流水号的长度* @return 返回产生的流水号码*/String createMaxNo(String cNoType, int cNoLength);
}
2.4. api实例

package com.gblfy.business.service.impl;import com.gblfy.business.mapper.DullMapper;
import com.gblfy.business.service.SysMaxNoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.math.BigInteger;@Service
public class SysMaxNoServiceImpl implements SysMaxNoService {private final static Logger logger = LoggerFactory.getLogger(SysMaxNoServiceImpl.class);@Resourceprivate DullMapper dullMapper;/*** 功能:产生指定长度的流水号,一个号码类型一个流水** @param cNoType   流水号的类型* @param cNoLength 流水号的长度* @return 返回产生的流水号码*/@Overridepublic String createMaxNo(String cNoType, int cNoLength) {if ((cNoType == null) || (cNoType.trim().length() <= 0) ||(cNoLength <= 0)) {logger.info("NoType长度错误 {} NoLength错误", cNoType, cNoLength);return null;}cNoType = cNoType.toUpperCase();String tReturn = "";String cNoLimit = "SN";BigInteger tMaxNo = new BigInteger("0");tReturn = cNoLimit;try {String result = dullMapper.getMaxNo(cNoType, cNoLength);tMaxNo = new BigInteger(result);} catch (Exception e) {e.printStackTrace();logger.info("生成流水号出现异常,请核实!");}String tStr = tMaxNo.toString();//将生成的流水号进行加工处理tStr = LCh(tStr, "0", cNoLength);tReturn = tStr.trim();return tReturn;}/*** 将生成的流水号进行加工处理* <p>* 1.判断是否满足指定长度,如果不满足前面用0来补位* 2.将生成的流水号进行去空格处理* 3.将最终的流水号进行字符串拼接* </P>** @param sourString* @param cChar* @param cLen* @return*/private String LCh(String sourString, String cChar, int cLen) {int tLen = sourString.length();int i, iMax;String tReturn = "";if (tLen >= cLen) {return sourString;}//1.判断是否满足指定长度,如果不满足前面用0来补位iMax = cLen - tLen;for (i = 0; i < iMax; i++) {tReturn += cChar;}//2.将生成的流水号进行去空格处理//3.将最终的流水号进行字符串拼接tReturn = tReturn.trim() + sourString.trim();return tReturn;}
}
2.5. 控制层
package com.gblfy.business.controller;import com.gblfy.business.service.SysMaxNoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** 生成指定类型+位数的流水号** @Author gblfy* @Date 2022-05-16 20:13**/
@RestController
public class SysMaxNoController {@Autowiredprivate SysMaxNoService maxNoService;/*** 生成指定类型+位数的流水号** @param cNoType* @param cNoLength* @return*/@GetMapping("/generate/serial/number")public String generateSerialNumber(@RequestParam(name = "cNoType", required = false, defaultValue = "cNoType") String cNoType,@RequestParam int cNoLength) {return maxNoService.createMaxNo(cNoType, cNoLength);}
}
三、测试
3.1. 效果图

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构设计师 - ESB 企业服务总线

文章目录定义功能定义 传统中间件技术和WEB、XML相结合的产物&#xff0c;主要用以异构系统的集成。具备复杂数据的传输能力&#xff0c;支持基于内容的消息路由、过滤&#xff0c;并提供一系列标准的接口。 功能 服务位置透明、 消息路由、 消息增强、 消息格式转换、 传输…

阿里云助力完美日记半年内系统吞吐量提升50倍

阿里云 Redis 直播地址 近年来&#xff0c;完美日记的“小黑钻口红”“动物眼影盘”等爆款彩妆出现在了越来越多女孩子的化妆台上&#xff0c;完美日记&#xff08;Perfect Diary&#xff09;是由逸仙电商在2017年推出的彩妆品牌&#xff0c;凭借着高颜值和性价比&#xff0c;完…

唏嘘!程序员,你的年底KPI完不成的原因找到了!

加班是每个互联网人不愿面对而却又绕不过去的话题&#xff0c;就连面试时“你怎么看待加班”的问题都成了必答题。现在临近年底&#xff0c;大家都在努力冲业绩&#xff0c;期待拿更多的年终奖&#xff0c;回家过个“富足年”。年底冲业绩&#xff0c;势必会增加我们的工作量&a…

阿里云SAG2.0发布,助力企业全球互联

2016年以来&#xff0c;阿里云洛神云网络陆续发布了高速通道、VPN网关、云企业网CEN&#xff08;cloud enterprise network&#xff09;、SAG&#xff08;smart access gateway&#xff09;等混合云网络产品&#xff0c;基于阿里云全球核心网络不断扩展云网络的应用场景&#x…

云原生存储详解:容器存储与K8s存储卷

作者 | 阚俊宝 阿里云技术专家 导读&#xff1a;云原生存储详解系列文章将从云原生存储服务的概念、特点、需求、原理、使用及案例等方面&#xff0c;和大家一起探讨云原生存储技术新的机遇与挑战。本文为该系列文章的第二篇&#xff0c;会对容器存储的相关概念进行讲述&#x…

阿里彻底拆中台了!

作者| Mr.K来源| 技术领导力(ID&#xff1a;jishulingdaoli)头图 | 付费下载于视觉中国老K独家了解到&#xff0c;张勇近期在阿里内网发布文章表示&#xff0c;他对目前阿里的中台并不满意&#xff0c;他直言道&#xff0c;现在阿里的业务发展太慢&#xff0c;要把中台变薄&…

漫画通信:有了它,终于可以放心买买买了

原文链接 本文为云栖社区原创内容&#xff0c;未经允许不得转载。

企业微信小程序~开启线上真机调试模式

文章目录一、概念理解1. 概念简述2. 线上真机调试前提二、线上真机调试流程2.1.开发小程序2.2.上传小程序2.3.补充小程序发布信息2.4.程序提交审核2.5.发布小程序2.6. 企微后台应用关联小程序2.7. 小程序发布流程三、开启调试模式3.1. 扫描二维码3.2. 打开多场景调试3.3. 进入调…

EasyExcel 设置单元格格式为 文本

文章目录1.全局设置标题和内容字体格式2.个性化设置某一列格式3.无内容时 &#xff08;预制模板&#xff0c;流形式写会&#xff09;1.全局设置标题和内容字体格式 通过WriteCellStyle 的dataFormat属性和BuiltinFormats指定字体格式 这种单元格有内容时字体才会生效&#xff…

云原生人物志 | Pulsar翟佳:社区的信任最重要

云原生已无处不在&#xff0c;《云原生人物志》是CSDN重磅推出的系列原创采访&#xff0c;我们关注云原生中每一个技术人、公司的身影。知微见著&#xff0c;窥见云原生价值与趋势。编辑 | 宋 慧出品 | CSDN云计算头图 | 付费下载于视觉中国

田亮:坚信大数据的变革力量

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 我和田亮的交流耗时较久&#xff0c;甚至用上了他出差的所有碎片时间&#xff0c;而他的回答始终谨慎、认真…

Easyexcel异常处理:getOutputStream() has already been called for this response

文章目录异常日志源码位置异常原因异常前代码调整后代码异常日志 java.lang.IllegalStateException: getOutputStream() has already been called for this responseat org.apache.catalina.connector.Response.getWriter(Response.java:582) ~[tomcat-embed-core-9.0.17.jar!…

玩转DB里的数据—阿里云DMS任务编排之简介和实操

1.任务编排介绍 数据库是企业IT系统里的重要基础设施&#xff0c;里面存储了大量有价值的数据资产&#xff0c;如&#xff1a;交易数据、客户数据、订单数据&#xff0c;等等。其实&#xff0c;数据库在企业里一直扮演着一个数据生产者&#xff08;Producer&#xff09;的角色…

用户隐私保护指引设置~参考案例

文章目录1. 搜索小程序2. 进入小程序详情3. 更多资料4. 小程序隐私指引5. 具体参考事项1. 搜索小程序 这里以腾讯文档进行演示 2. 进入小程序详情 3. 更多资料 4. 小程序隐私指引 5. 具体参考事项 以实际的情况为准&#xff0c;这里只是演示

在存储器的层次结构里,谁最快,谁最贵,谁最大?

来源 | 小林coding责编 | 寇雪芹头图 | 下载于视觉中国前言大家如果想自己组装电脑的话&#xff0c;肯定需要购买一个 CPU&#xff0c;但是存储器方面的设备&#xff0c;分类比较多&#xff0c;那我们肯定不能只买一种存储器&#xff0c;比如你除了要买内存&#xff0c;还要买硬…

云原生存储系列文章:云原生应用的基石

作者| 郡宝 阿里云技术专家 参与文末留言互动&#xff0c;即有机会获得赠书福利&#xff01; 导读&#xff1a;存储服务支撑了应用的状态、数据的持久化&#xff0c;是计算机系统中的重要组成部分&#xff0c;也是所有应用得以运行的基础&#xff0c;其重要性不言而喻。在存储…

java 读取jar包中的文件

文章目录项目resource中文件路径和jar包中文件路径的区别正常读取jar包读取完整代码&#xff1a;项目resource中文件路径和jar包中文件路径的区别 打成jar包后&#xff0c;是一个整体的文件。 正常读取 InputStream inputStream new FileInputStream("src/main/resource…

算法真的太重要了!CSDN用动画帮你快速 get 核心原理

无论你是 Java&#xff0c;Python&#xff0c;还是 PHP&#xff0c;面试总逃脱不了一个问题&#xff1a;算法&#xff01;算法是面试常问的问题&#xff0c;这也是程序员准备面试之前&#xff0c;常刷数据结构与算法的原因之一&#xff01;算法成为程序员头疼的难题&#xff0c…

开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。

一、背景 阿里云对象存储 OSS 是保存海量数据的平台&#xff0c;支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景&#xff0c;对于数据的丢失会非常着急&#xff0c;后果也非常严重&#xff0c;甚至某些情况下还会影响你的职业生涯。O…

拥抱创新,持续探索——对话阿里云MVP胡逢法

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 胡逢法作为阿里云 MVP&#xff0c;是一名经验丰富的人工智能领域研究专家&#xff0c;谦虚诚恳、精力充沛。…