mybatis plus的@SqlParser注解作用是什么?

网上的文章都是demo性质的介绍说是多租户,让人感觉不是很明白,实际应用场景中用来做什么?

阅读 5.6k
1 个回答

首先,你得明白多租户的概念,假设你已经明白。


比如现在系统中有个订单表,这个是很多商户共用的。
现在需要给各个商户提供某些功能:如查询他们商户下所有订单。需要写类似SQL
SELECT * FORM order WHERE tenan_id = 123

现在还需要给总运营平台提供某些功能:如查询平台所有商户的订单。需要类似SQL
SELECT * FORM order

假如现在又有收货地址,积分等等表,里面都有tenan_id来标识商户ID。此时SQL都需要添加一个参数,那就是tenan_id = 123


MyBatis-Plus的TenantLineInnerInterceptor可以帮我们自动完成tenan_id = 123拼接。但是比如 用户表 这种,是不要拼接的。这时有两种解决方式:

  • 在设置拦截器时,将用户表排查,不使用插件
  • 在具体Mapper中的方法上,添加SqlParser注解,当然该注解已被废弃,最新的使用InterceptorIgnore。这样设置后,该方法生成的SQL便不会被拼接tenan_id = 123

多租户示例项目:https://gitee.com/baomidou/my...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进