Atoms生成代码二次修改数据过滤权限实现教程
Atom中为SpringBoot+MyBatis项目添加数据权限过滤需四步:确认项目根路径与Ja va语法高亮、修改DataPermissionInterceptor注入动态WHERE条件、更新Mapper XML或Wrapper调用、重载Atom并执行mvn compile触发热重载。

在Atom编辑器中为项目添加数据权限过滤逻辑的二次修改,需绕过默认不拦截SQL语句的限制,将MyBatis插件注入逻辑与Atom本地开发流打通——这不是改几行代码就能生效的事,必须让Atom能识别并热重载你修改后的Ja va字节码或XML配置,否则Spring Boot启动时仍加载旧的拦截器规则。
确认Atom是否已加载项目源码并支持Ja va语法高亮
打开Atom → Ctrl+P → 输入“application.properties”并回车,确认能直接跳转到Spring Boot配置文件;若提示“no files found”,说明Atom未将当前目录识别为项目根,需用File → Add Project Folder重新添加完整后端模块路径。
安装language-ja va插件:Ctrl+Shift+P → 输入Install Packages → 搜索language-ja va → 点击Install。不装这个插件,.ja va文件里写的@DataScope注解、@Intercepts等关键标识全无高亮,极易漏改字段名或拼错拦截器签名。
定位并修改MyBatis拦截器核心类
在Atom左侧树形目录中依次展开src/main/ja va,找到类似于com.xxx.interceptor.DataPermissionInterceptor.ja va的文件。若未找到该文件,可以通过搜索“@Intercepts”或“Executor.class”来定位入口类。
找到intercept方法内部的SQL重写逻辑段落,在原有where条件拼接前插入如下代码块:
if (ms.getSqlCommandType() == SqlCommandType.SELECT && hasDataScopeAnnotation(ms)) {
String originalSql = boundSql.getSql();
String newSql = injectPermissionCondition(originalSql, getCurrentUserDeptId());
boundSql = new BoundSql(configuration, newSql, boundSql.getParameterMappings(), boundSql.getParameterObject());
}
注意:injectPermissionCondition方法必须存在且能正确解析create_user_id/dept_id等字段;若该方法缺失,在Atom中直接将其完整实现粘贴到当前类末尾,不要新建文件——Atom对多文件联动编译支持较弱,跨文件引用易导致热重载失败。
修改Mapper XML中需受控的查询语句
在Atom中用Ctrl+Shift+F全局搜索“select * from t_order”,定位所有原始查询语句。
方法一:直接在XML的
在where子句末尾添加:
方法二:使用MyBatis-Plus风格的wrapper注入(仅当项目已引入mybatis-plus-boot-starter)
将原Mapper接口方法签名改为:List
【务必检查parameterType是否仍为map或entity,若已改为Wrapper则原XML中#{xxx}占位符全部失效】
刷新Atom缓存并触发Spring Boot热重载
第一步:按Ctrl+Shift+P → 输入“Window: Reload” → 回车,强制Atom重读整个项目结构,避免因文件监听延迟导致修改未被识别。
第二步:确保已安装atom-ja va-complete插件,并在Atom设置中勾选“Use Ja va Language Server”。没有它,Ctrl+Click无法跳转到Configuration类,你改了拦截器却找不到它被注册的位置。
第三步:在Atom中打开src/main/resources/mybatis-config.xml,确认
第四步:保存全部文件 → 切换到终端 → 执行mvn compile → 观察控制台是否输出“Recompiling Ja va classes…”。若无此提示,说明Atom未触发构建,需手动执行。
-
- 元宵节猜灯谜的祝福短信
- 角色扮演 |
-
- 关于柯南的沙雕网名有哪些
- 角色扮演 | 1
- 网名
-
- 最新中性名字男女通用网名有哪些
- 角色扮演 | 1
- 网名
-
- 关于蓝色说唱的网名有哪些
- 角色扮演 | 1
- 网名
-
- 我好喜欢你是什么梗?
- 角色扮演 |