ThreadLocal中的值穿透到sql语句中进行赋值

背景

在新增一条记录时,数据库中有create_id字段,在新增的Service层每次都需要setCreateId和setUpdateId有点麻烦能不能再mybatis的SQL语句中从ThreadLocal中获取当前的用户ID,而不用每次新增去setCreateId了。

代码

注意事项:getUserId()方法必须是静态方法。

package com.zhao.UserServer;
@Service
public class UserServer {
	@Resource
	private UserMapper userMapper;

	private static ThreadLocal<Long> userIdThreadLocal=new ThreadLocal<~>();

	public void setUserId(Long userId) {
		 userIdThreadLocal.set(userId);
	 }

	public static Long getUserId() {
		 return userIdThreadLocal.get();
	  }

	public void insert(User user) {
		int i = userMapper.insert(user);
	}

SQL语句

 <insert id="insert" keyProperty="id" useGeneratedKeys="true">
    insert into user(id,name,password) values (${@com.zhao.UserServer@getUserId()},#{name},#{password})
    </insert>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值