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。