测试数据库:mysql 5.5.30
建表脚本:
CREATE TABLE `sys_seq` (
`CODE` varchar(50) NOT NULL,
`VALUE` bigint(16) NOT NULL,
PRIMARY KEY (`CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
相关Service和测试类如下:
@IocBean(name = "baseService", args = { "refer:dao" })
public class BaseServiceImpl implements IBaseService {
private final Lock lock = new ReentrantLock();
public BaseServiceImpl(){
}
public BaseServiceImpl(Dao dao){
this.dao = dao;
}
public long setNextVal(final String key) {
lock.lock();
try {
if(Strings.isBlank(key)) return -1;
Record r = dao.fetch("sys_seq", Cnd.where("code", "=", key));
if(r != null &&