1.任务安排
实现了向activity表和act_room_seat表中添加一条记录,需要将其合并实现创建教学活动功能
2.任务分析
activity表保存的是活动的基本属性,act_room_seat表保存的是针对该活动座位的状态。当前端创建教学活动时,生成这两条记录应该是要么都完成,要不都不完成。如果在执行过程中发生了错误,需要回滚到创建教学活动之前的状态。所以我们需要使用事务。通过查找资料发现,Sprint boot实现事务控制比较简单。只需要添加注解即可,这里也体现出了注解的优势所在。
3.具体代码
@Transactional
public int create_activity(LinkedHashMap<String,String> params) throws ParseException {
int result=0;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String act_name=params.get("act_name");
String act_desc=params.get("act_desc");
Date act_start_time=df.parse(params.get("act_start_time"));
Date act_end_time=df.parse(params.get("act_end_time"));
String room_name=params.get("room_name");
Date pick_start_time=df.parse(params.get("pick_start_time"));
Date pick_end_time=df.parse(params.get("pick_end_time"));
Date sign_in_time=df.parse(params.get("sign_in_time"));
Date sign_out_time=df.parse(params.get("sign_out_time"));
String qrcode=params.get("qrcode");
String act_seat_status=params.get("act_seat_status");
Activity activity=new Activity(0,act_name,act_desc,act_start_time,act_end_time,
room_name,pick_start_time,pick_end_time,sign_in_time,sign_out_time,qrcode);
result+=activityMapper.add_activity_record(activity);
int act_id=activity.getAct_id();
String[] status=act_seat_status.split("");
int[] seat_ids=activityMapper.find_seat_id_by_room_name(room_name);
for(int i=0;i<status.length;i++)
{
result+=activityMapper.add_act_room_seat_record(act_id,room_name,seat_ids[i],status[i]);
}
return result;
}
在启动类还需要添加@EnableTransactionManagement注解