public int dogetUserIdAndFindUserTokenTimeout(String userToken) throws Exception{
//经过userToken 获取userId ,而且 检查 令牌是否过期了,这样就不用通过拦截器了,app 方便,个人架构也更加的好,也更加的灵活
Example example = new Example(IosTokenClient.class);
Example.Criteria select = example.createCriteria();
select.andEqualTo("token", userToken);ios
List<IosTokenClient> userTokens = iosTokenClientMapper.selectByExample(example);架构
if (userTokens.size() == 0) {
// 不存在该UUID
throw new LyecSystemException("2");// 令牌失效
} else {app
Date addTime = userTokens.get(0).getAddTime();
Date nowTime = new Date();
// 判断时间是否相差过15天,超过15天无效
if (((nowTime.getTime() - addTime.getTime()) / (24 * 60 * 60 * 1000)) > 15) {
// 同时须要删除该 过期的tokentoken
iosTokenClientMapper.deleteByPrimaryKey(userTokens.get(0).getId());事务
throw new Exception("2");// 这样也是不会回滚的,由于 exception
// 比runtimeException大get
} else {it
return userTokens.get(0).getUserId();io
}编译
}class
由于回滚的最大的异常只是 runtimeException,它就是运行期异常,若是 抛得是 exception译异常,它比runtimeException还大,事务不把它当作 运行期异常了,能够把它做为编译期异常了,因此事务不会回滚的啦。 若是代码在执行的过程抛出了其余异常 那么通常也就是 运行期异常了,事务仍是会回滚的啦。 除非你 try catch捕获了,没有手动抛出异常,那么也是不会回滚的,算编译期异常了的