java自定义长度和前缀放号器的使用

  • 简单的自定义长度和前缀放号系统,记录以后直接c

1、建表

  • 建立一张放号器的表,字段规定如下,对应创建系统放号表。


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 系统放号表
 *
 * @author lxy
 * @since 2020-11-16
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel(value="SysTableNo对象", description="系统放号表")
public class SysTableNo implements Serializable {
    private static final long serialVersionUID = 727130850833273600L;

    @ApiModelProperty(value = "id主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty(value = "实体表名称")
    private String tableName;

    @ApiModelProperty(value = "字段名称")
    private String field;

    @ApiModelProperty(value = "前缀名")
    private String prefix;

    @ApiModelProperty(value = "顺序号")
    private Integer orderNo;

    @ApiModelProperty(value = "放号长度")
    private Integer length;

    public SysTableNo(String table, String field, String prefix,Integer length) {
        this.tableName = table;
        this.field = field;
        this.prefix = prefix;
        this.length = length;
    }

}

2.mybatis对应mapper及mapper.xml的创建

  • 对应修改实体类及mapper的对应位置“com.xx.ebc.mapper.SysTableNoMapper、com.xx.ebc.model.SysTableNo”
<?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.xx.ebc.mapper.SysTableNoMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.xx.ebc.model.SysTableNo">
        <id column="id" property="id" />
        <result column="table_name" property="tableName" />
        <result column="field" property="field" />
        <result column="prefix" property="prefix" />
        <result column="order_no" property="orderNo" />
        <result column="length" property="length" />
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, table_name, field, prefix, order_no,length
    </sql>

    <update id="updateOrderNo">
        UPDATE sys_table_no
        SET
        order_no = order_no + 1
        WHERE
        table_name = #{one.tableName} AND field = #{one.field} AND prefix = #{one.prefix};
    </update>

</mapper>


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xx.ebc.model.SysTableNo;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 系统放号表 Mapper 接口
 * </p>
 *
 * @author lxy
 * @since 2020-11-16
 */
public interface SysTableNoMapper extends BaseMapper<SysTableNo> {

    boolean updateOrderNo(@Param("one") SysTableNo one);
}

3.放号实现


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xx.ebc.mapper.SysTableNoMapper;
import com.xx.ebc.model.SysTableNo;
import com.xx.ebc.service.SysTableNoService;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 系统放号表 服务实现类
 * </p>
 *
 * @author lxy
 * @since 2020-11-16
 */
@Service
public class SysTableNoServiceImpl extends ServiceImpl<SysTableNoMapper, SysTableNo> implements SysTableNoService {


    @Override
    public boolean updateOrderNo(SysTableNo one) {
        return baseMapper.updateOrderNo(one);
    }

    @Override
    public String next(String table, String field, String prefix, Integer length) {
        SysTableNo editable = new SysTableNo(table, field, prefix,length);
        boolean b = this.updateOrderNo(editable);
        if (!b){
            editable.setOrderNo(0);
            editable.setPrefix(prefix);
            editable.setLength(length);
            this.save(editable);
        }
        QueryWrapper<SysTableNo> wrapper = new QueryWrapper<>();
        wrapper.setEntity(editable);
        SysTableNo one = this.getOne(wrapper);
        Integer no = one.getOrderNo();
        String fix = one.getPrefix();
        int i = (no + fix).length();
        String c = "";
        for (int j = 0; j < length - i; j++) {
            c += "0";
        }
        return String.format("%s%s%s", fix, c, no);
    }
}

4.调用放号


    @Autowired
    private SysTableNoService manageTableNoService;
    
    /**
     * @param table  操作表
     * @param field  字段
     * @param prefix 前缀
     * @param length 长度

     * @description 系统放号
     * @since 2020-11-16 11:36
     **/
    @Override
    public String next(String table, String field, String prefix, Integer length) {
        return manageTableNoService.next(table, field, prefix, length);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值