您的位置:首页 > 编程语言 > Java开发

主键ID流水号

2016-03-24 17:51 417 查看
mysql语句

比如想生成PKPK+0000这样的流水号:PKPK0000,PKPK0001,PKPK0002

利用mysql最大值函数,从第五位开始截取。

select MAX(substring(a.BOOK_ID,5)) as MAXID from oa_xz_book_1 a

@Override
public String findBookMaxBookId(Criteria criteria) {
StringBuffer buffer = new StringBuffer();
buffer.append("select MAX(substring(a.BOOK_ID,"
+ criteria.getAsInteger("bookTypeIdLength")
+ ")) as MAXID from oa_xz_book_"
+ criteria.getAsString("comCode") + " a");
System.out.println("findBookTypeMaxId=" + buffer.toString());
return (String) baseDao.queryForList(buffer.toString()).get(0)
.get("MAXID");
}

主键生成

String num = bookService.findBookMaxBookId(criteria);
if (num == null) {
newNumber = "00";
} else {
newNumber = String.valueOf(Integer.valueOf(num) + 1);
}

for (int j = 0; j < 4; j++) {
if (newNumber.length() < 4) {
newNumber = "0" + newNumber;
}
}
String pk="PKPK" + newNumber;

for循环中的次数就是要生成几个0,在这是4个,如果生成这样的流水号PKPK000,循环次数就是3

假如最大值为13,不过这个不是我们需要的,我们需要的是字符串的0013,所以需要在前面加2个0。因此长度只要小于4,就要在前面加一个0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java