@Override @Transactional public int insertTbActivity(TbActivity tbActivity){ tbActivity.setCreateTime(DateUtils.getNowDate()); tbActivity.setCode(getCode()); tbActivity.setStatus("2"); int rows= tbActivityMapper.insertTbActivity(tbActivity); loadAllActivityCode(); return rows; }代码优化并说明过程和为什么要这么优化
时间: 2023-05-29 21:03:24 浏览: 137
Set-full-screen-and-key-exit.rar_android.setfull_android返回_full
优化后代码:
```
@Override
@Transactional
public int insertTbActivity(TbActivity tbActivity) {
String code = getCode();
tbActivity.setCode(code);
tbActivity.setStatus("2");
tbActivity.setCreateTime(DateUtils.getNowDate());
int rows = tbActivityMapper.insertTbActivity(tbActivity);
loadActivityCode(code);
return rows;
}
private void loadActivityCode(String code) {
if (activityCodeSet == null) {
loadAllActivityCode();
} else {
activityCodeSet.add(code);
}
}
private synchronized void loadAllActivityCode() {
if (activityCodeSet == null) {
activityCodeSet = new HashSet<>();
List<TbActivity> activityList = tbActivityMapper.selectTbActivityList(new TbActivity());
for (TbActivity activity : activityList) {
activityCodeSet.add(activity.getCode());
}
}
}
```
优化过程和原因:
1. 在设置活动编码之前,先获取活动编码,避免在设置编码时出现并发问题。同时,将获取编码的逻辑单独提取出来作为一个方法,提高代码的可读性。
2. 在设置活动状态和创建时间时,使用统一的时间工具类获取当前时间,避免代码重复。
3. 对于已经加载过的活动编码集合,直接添加新的编码,避免重复加载活动编码。
4. 将加载全部活动编码的方法设置为同步方法,避免多线程并发访问时出现问题。
这样优化后的代码更加简洁易懂,同时避免了并发问题和重复加载活动编码的情况。
阅读全文