发表于: 2017-06-26 22:50:08
3 994
今日完成
今天开始做任务7,全部重写,没有使用以前的code。搭建完任务后,计划从用户注册的功能开始写。
用户系统建了个稍微复杂点的,有Role 和Permission的三个数据库的,用户注册成功后的role是user:unconfirmed也就是还没有通过验证的用户,然后用户可以通过手机验证后,成文user:phone-confirmed。
也就是说建立用户的时候要对user这个table 和user-role这个table进行insert。这就要使用transaction了。开始看mybatis transaction。
最后选择使用下面的代码解决transaction问题
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
userRegMapper.insert(reg);
userRoleMapper.insert(reg.getUser_id(), 1);
} catch (Exception e) {
transactionManager.rollback(status);
throw e;
}
transactionManager.commit(status);
测试了上面的代码,没有问题。
如果插入任何一个数据不成功,两个insert都不会成功。只有两个insert都成功的时候,才会commit。
今日遇到困难
尝试学习使用spring的@Transactional annotation。开始按照网上的一些文章做,结果加了@Transactional之后,junit测试程序虽然不出错,但是数据也写不到数据库。google了一会,发现各色文章写的真是java特点,完全听不懂,各种专有名词,各种道理。学java感觉就是总遇到懂的人看得懂,不懂的人看不懂的文章。然后还是跳回mybatis官网,使用比较传统的方法解决了。
今日收获
学习了mybatis在spring下的比较简单的transaction方式
明日计划
继续task7
评论