1.生成类似与220114这样的日期数字
`String yearMonth = DateUtils.parseDateToStr("yyMMdd", DateUtils.getNowDate());
2.new一个map
Map map = new HashMap();
3.new一个String拼接字符串和日期数字
String pre = "AC" + yearMonth;
4.将per塞到map里
map.put("pre", pre);
5.再new一个String利用模糊查找数据库里最大的编码
String maxCode = findMaxCode(map);
findMaxCode方法
@Override
public String findMaxCode(Map map) {
return jijianAccountMapper.findMaxCode(map);
}
SQL语句
select max('编码') as max_code from '表名'
where '编码' like concat(#{pre}, '%')`
6.返回GenerateCodeUtil类的create方法
return GenerateCodeUtil.create(pre, maxCode, pre.length(), 3);
7.看到这个方法有四个参数分别是前缀,最大编码,前缀长度,编码中最后放几位顺序码,我们进入GenerateCodeUtil类
public static String create(String pre, String maxCode, int preLength, Integer sequenceBit) {
//预备补位0
String codeBit = "0000000000000000";
//要生成的编码
String nextCode = "";
if (!EmptyUtils.isEmpty(maxCode)) {
nextCode = maxCode.substring(0, preLength);
Integer codeNum = Integer.valueOf(maxCode.substring(pre.length()));
Integer zeroNum = sequenceBit > String.valueOf(codeNum + 1).length() ? sequenceBit - (String.valueOf(codeNum + 1).length()) : 0;
nextCode += (zeroNum > 0 ? (codeBit.substring(0, zeroNum) + (codeNum + 1)) : (codeNum + 1));
} else {
nextCode = pre + codeBit.substring(0, sequenceBit - 1) + "1";
}
return nextCode;
}
总结,这就是完成步骤和方法