RRFARE_FRAME框架搭建

1、 数据库设计
(1) 表格设计
设置主键
设置保留字段:reserve1、reserve2、reserve3
设置删除标志字段:id_del
设置创建时间字段:create_time
设置更新时间字段:last_update_time
表格命名:数据库名_业务逻辑名称
数据库命名:公司名_业务逻辑名称
是否有外键约束?(高并发应用一般不设置外键,数据完整性由应用端负责)
//////创建实例///////
RRFARE_FRAME框架搭建
(2) Entity、Mapper、Dao、API、Service生成
使用MyBatis Generator生成
RRFARE_FRAME框架搭建
(3) 新增策略
主键使用UUID自动生成
更新create_time
更新last_update_time
(4) 删除策略
逻辑删除:默认策略,set is_Del = Y; 注意更新last_update_time
物理删除:Mapper也提供
(5) 更新策略
注意更新last_update_time

2、 系统架构设计
(1) SSM框架整合

(2) 前后端分离
前端输入:HttpServletRequest request,HttpServletResponse response
参数提取:ServletUtils.objectMethod(FUser.class, request)
响应参数封装:ResultVo
响应输出:WebUtils.writeObjectToPage(resultVo, response);

(3) 系统日志处理

(4) 事物处理
用户扫账单推送优惠券,符合条件自动领取,需要同时更新“优惠券领取表”和“优惠券统计表”,两者要么同时成功、要么同时失败
声明式事物处理

步骤1: applicationContext.xml中,
aop:aspectj-autoproxy proxy-target-class=”true” />
tx:annotation-driven transaction-manager=”transactionManager” proxy-target-class=”true” />

步骤2:Service层方法上添加注解,@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, rollbackFor = Exception.class)

步骤3:引用cglib.jar

什么时候标记事物回滚
1.默认只标记RuntimeException(unchecked Exception)