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;
@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;
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;
@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;
@Override
public String next(String table, String field, String prefix, Integer length) {
return manageTableNoService.next(table, field, prefix, length);
}