首页 > 其他分享 >mybatis 自定义序列号

mybatis 自定义序列号

时间:2023-05-09 15:12:43浏览次数:29  
标签:COMMENT name 自定义 sequence value id mybatis 序列号 day

功能需求:每天的序列号从1开始,保留四位数,不足4位往前补0

1,新建一张表

 

CREATE TABLE `sequence` (
  `day_id` date DEFAULT NULL COMMENT '账期',
  `name` varchar(50) COLLATE utf8mb4_bin NOT NULL COMMENT '序列的名字',
  `current_value` int(11) NOT NULL COMMENT '序列的当前值',
  `increment` int(11) NOT NULL COMMENT '序列的自增值',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='序列表';

2,mybatis  写法

    <!-- 获取序列号并更新序列号 -->
    <update id="nextval" parameterType="com.xxx.xxx.xxx.entity.Sequence">
        <selectKey resultType="java.lang.Long" keyColumn="current_value" keyProperty="current_value" order="AFTER">
            select current_value from sequence
            where name=#{name}
        </selectKey>
        UPDATE
            sequence
        SET current_value =
                CASE when day_id = CURDATE() then current_value + increment else 1 end,
            day_id =
                CASE when day_id = CURDATE() then day_id else CURDATE() end
        WHERE name = #{name};
    </update>

3,调用

//编号规则为:07XXYYYYMMDDnnnn,即 4位区号+8位日期+4位序号,如长沙分公司3月8日提交的工单为:XXXX202303080001
            String workOrderNumber = "";
            //查询序列号
            Sequence sequence = new Sequence();
            sequence.setName(name);
            myPointMapper.nextval(sequence);

            //获取当前时间
            Date date=new Date();
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
            //位数不足往前补0
            String serial_number = StringUtils.leftPad(String.valueOf(sequence.getCurrent_value()), 4, "0");

            workOrderNumber = "XXXX" + df.format(date) + serial_number;

 

标签:COMMENT,name,自定义,sequence,value,id,mybatis,序列号,day
From: https://www.cnblogs.com/ljmm/p/17385064.html

相关文章

  • C#自定义异常就这么简单
    C#是一种强类型语言,可以捕获和处理各种异常,从而帮助我们发现程序中出现的错误。在程序开发过程中,如果需要找到特定的错误情况并处理,这时就需要创建自定义异常。本文将介绍如何在C#中创建和使用自定义异常。1、什么是异常?异常是指在程序执行期间发生的错误或异常情况,例如除法中除......
  • MyBatisPlus
    MyBatisPlus今日目标基于MyBatisPlus完成标准Dao的增删改查功能掌握MyBatisPlus中的分页及条件查询构建掌握主键ID的生成策略了解MyBatisPlus的代码生成器1,MyBatisPlus入门案例与简介这一节我们来学习下MyBatisPlus的入门案例与简介,这个和其他课程都不太一样,其他的课程都......
  • MyBatis 概念与CRUD
    MyBatis一、概念与简介1.1框架概念ORMORM(ObjectRelationalMapping)对象关系映射,将程序中一个对象与表中的一行数据一一对应ORM映射框架,提供持久化类与表的映射关系,在运行时参照映射文件的信息,把对象持久化到数据库中。提供动态sql语句(set标签/sql片段/if标签/fo......
  • 2023最新版——新手使用mybatis-plus 3.5.2并使用器代码生成器
    最新版——新手使用mybatis-plus3.5.2并使用器代码生成器第一步,pom文件引入依赖主要引入mybatis-plus和代码生成器需要使用的freemaker依赖<dependency> <groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</vers......
  • 关于 mybatis-spring-boot-starter 的版本适配问题
    写在前面:本人就读于某不知名二本计科专业,目前大二,正在自学SpringBoot。博客中难免出现谬误,请大家批评指正,不喜勿喷,键盘侠手下留情。开发环境:IDEA2022.3.2JDK1.8SpringBoot2.7.11Maven3.9.0问题描述:最近在写一个SpringBoot项目,整合了Mybatis,在程序运行时出现如下报错......
  • vue2自定义组件@click点击失效问题及解决
    1.参照官方文档,可以用@click.native=“click”解决2.$emit组件之间事件传递解决https://www.jb51.net/article/246610.htm......
  • MyBatis-Plus和PageHelper冲突导致Factory method sqlSessionFactory threw exception
    springboot开始引入了mybaits-plus。后来想引入pagehelper进行分页,引入之后报错ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.13:48:24.428ERRORo.s.boot.SpringApplication[845]-Applicationrun......
  • 若依--自定义指令 v-hasPermi 和 v-hasRole
    为什么大家都在用若依?若依版本有很多种,前端的,后端的,大家点击去看看http://doc.ruoyi.vip/,看完记得回来!第一次接触到若依是进入这家公司之后,以前做项目都是“白手起家”,若依项目结构清晰,很多轮子都被造好了,不用自己搭建项目,gitclone就完成了,happy!还有项目文档可以查看,虽然我......
  • C# DataGridView自定义排序
    privatevoiddgvScanFai_SortCompare(objectsender,DataGridViewSortCompareEventArgse){if(e.Column.Name=="Time"){stringcellValue1=e.CellValue1.ToString();stringcellValu......
  • MyBatis SQL 批量更新(代码案例)
    写于2021061821:00北京望京一条记录update一次,性能比较差,容易造成阻塞。基于mybatis批量更新,特此记录。@[toc]1.场景当我们在做更新或者是插入操作时,数据为多对多、一一对应的情况例如:编号。名字。状态1tom02jerry03jeck1代码中循环写入、更新这是大多......