背景:在ruoyi上添加了新模块,内容为自己手写的crud(用户表)

需求:加上乐观锁。因为实在不想把项目改成MP,所以写了一个非常简略的。

步骤分析:

①使用用户id查询数据库中该用户信息的version;

②把该version添加进需要更新的数据里;

③在确认version与数据库中的一致的情况下,添加数据,version + 1。

代码:

service实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
@Transactional
public int updateUser(DemoUser demoUser) {
Long userId = demoUser.getId();
//删除用户与岗位关联信息
demoUserPostMapper.deleteUserPostByUserId(userId);
//新增用户与岗位关联信息
addUserPost(demoUser);
//从数据库获取当前版本号
long oldVersion = demoUserMapper.findVersionByUserId(userId);
demoUser.setVersion(oldVersion);
//更新用户信息
return demoUserMapper.updateUser(demoUser);
}

Mapper xml:

1
2
3
4
5
6
7
8
<select id="findVersionByUserId" resultType="Long">
select version from demo_user where id = #{userId}
</select>

<update id="updateUser">
update demo_user set name = #{name}, age = #{age}, number = #{number}, password = #{password}, version = #{version} + 1, del_flag = #{delFlag}
where id = #{id} and version = #{version}
</update>

不得不说很简单哈哈