前端的菜单和按钮权限都可以通过配置来实现,但很多时候,后台查询数据库数据的权限需要通过手动添加SQL来实现。 比如员工打卡记录表,有id,name,dpt_id,company_id等字段,后两个表示部门ID和分公司ID。 查看员工打卡记录SQL为:select id,name,dpt_id,company_id from t_record 当一个总部账号可以查看全部数据此时,sql无需改变。因为他可以看到全部数据。 当一个部门管理员权限员工查看全部数据时,sql需要在末属添加 where dpt_id = #{dpt_id} 如果每个功能模块都需要手动写代码去拿到当前登陆用户的所属部门,然后手动添加where条件,就显得非常的繁琐。 因此,可以通过mybatis的拦截器拿到查询sql语句,再自动改写sql。 mybatis 拦截器 MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback,...