☰
Current Page
Main Menu
Home
Home
Editing
iidp 忽略标记使用文档
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
# iidp 忽略标记使用文档 ## 1. 概述 iidp 平台通过 `MetaConstant` 定义了一系列忽略标记,用于在特定业务场景下跳过框架默认行为(如逻辑删除、校验、审计日志等)。 **核心原则**:所有忽略标记必须通过 `try-finally` 确保清理,防止标记泄漏影响后续请求。 --- ## 2. 标准使用模式 ```java Meta meta = BaseContextHandler.getMeta(); try { // 1. 添加忽略标记 meta.addArgument(MetaConstant.XXX, true); // 2. 执行业务操作 } finally { // 3. 必须清理标记 meta.getArguments().remove(MetaConstant.XXX); } ``` --- ## 3. 忽略标记清单 | 标记常量 | 值 | 作用 | 使用场景 | | --------------------- | --------------------- | -------------------- | ----------------------------- | | `IGNORE_LOGIC_DELETE` | `"IgnoreLogicDelete"` | 跳过逻辑删除过滤 | 查询/更新已删除数据、数据恢复 | | `IGNORE_VALIDATE` | `"IgnoreValidate"` | 跳过数据校验 | 批量导入、系统初始化 | | `IGNORE_OPERATOR_LOG` | `"IgnoreOperatorLog"` | 跳过操作日志记录 | 高频批量操作、定时任务 | | `IGNORE_AUTO_LOG` | `"IgnoreAutoLog"` | 跳过审计字段自动填充 | 数据迁移、保留原始审计信息 | | `IGNORE_SCOPE` | `IS_IGNORE_SCOPE` | 跳过作用域/数据隔离 | 跨租户查询、管理员操作 | --- ## 4. 各标记详细示例 ### 4.1 IGNORE_LOGIC_DELETE - 跳过逻辑删除 **场景**:查询或更新已被逻辑删除的数据(`delete_flag = '1'`)。 ```java Meta meta = BaseContextHandler.getMeta(); try { meta.addArgument(MetaConstant.IGNORE_LOGIC_DELETE, true); TestUser testUser = new TestUser(); // 查询包含已删除的数据 List<TestUser> allUsers = testUser.search(null, null, null, null, null); } finally { meta.getArguments().remove(MetaConstant.IGNORE_LOGIC_DELETE); } ``` --- ### 4.2 IGNORE_VALIDATE - 跳过数据校验 **场景**:批量导入、系统初始化时跳过字段校验。 ```java Meta meta = BaseContextHandler.getMeta(); try { meta.addArgument(MetaConstant.IGNORE_VALIDATE, true); TestUser user = new TestUser(); user.setName(""); // 空值,正常触发 @Validate.NotBlank user.setAge(200); // 超过 @Validate.Max(110) user.create(); // 不校验,直接插入 } finally { meta.getArguments().remove(MetaConstant.IGNORE_VALIDATE); } ``` --- ### 4.3 IGNORE_OPERATOR_LOG - 跳过操作日志 **场景**:高频批量操作、定时任务,避免日志爆炸。 ```java Meta meta = BaseContextHandler.getMeta(); try { meta.addArgument(MetaConstant.IGNORE_OPERATOR_LOG, true); TestUser testUser = new TestUser(); // 批量更新 10万条,不记录操作日志 for (List<TestUser> batch : batches) { testUser.batchUpdate(batch); } } finally { meta.getArguments().remove(MetaConstant.IGNORE_OPERATOR_LOG); } ``` --- ### 4.4 IGNORE_AUTO_LOG - 跳过审计字段 **场景**:数据迁移、保留原始创建人/时间。 ```java Meta meta = BaseContextHandler.getMeta(); try { meta.addArgument(MetaConstant.IGNORE_AUTO_LOG, true); TestUser user = new TestUser(); user.set("create_user", "old_system"); // 保留原始创建人 user.set("create_date", "2020-01-01"); // 保留原始创建时间 user.create(); // 不自动填充审计字段 } finally { meta.getArguments().remove(MetaConstant.IGNORE_AUTO_LOG); } ``` --- ### 4.5 IGNORE_SCOPE - 跳过作用域/数据隔离 **场景**:跨租户查询、管理员查看全局数据。 ```java Meta meta = BaseContextHandler.getMeta(); try { meta.addArgument(MetaConstant.IGNORE_SCOPE, true); TestUser testUser = new TestUser(); // 查询所有租户的数据 List<TestUser> allTenantUsers = testUser.search(null, null, null, null, null); } finally { meta.getArguments().remove(MetaConstant.IGNORE_SCOPE); } ``` --- ## 5. 组合使用示例 **场景**:数据迁移 - 忽略逻辑删除、校验、审计日志。 ```java Meta meta = BaseContextHandler.getMeta(); try { // 组合添加多个标记 meta.addArgument(MetaConstant.IGNORE_LOGIC_DELETE, true); meta.addArgument(MetaConstant.IGNORE_VALIDATE, true); meta.addArgument(MetaConstant.IGNORE_AUTO_LOG, true); meta.addArgument(MetaConstant.IGNORE_OPERATOR_LOG, true); // 执行数据迁移 for (Map<String, Object> row : migrateData) { TestUser user = new TestUser(); user.setMap(row); user.create(); } } finally { // 必须全部清理 meta.getArguments().remove(MetaConstant.IGNORE_LOGIC_DELETE); meta.getArguments().remove(MetaConstant.IGNORE_VALIDATE); meta.getArguments().remove(MetaConstant.IGNORE_AUTO_LOG); meta.getArguments().remove(MetaConstant.IGNORE_OPERATOR_LOG); } ``` --- ## 6. 注意事项 | 注意点 | 说明 | | -------------------- | ------------------------------------------------ | | **必须 try-finally** | 标记存储在 `Meta` 上下文中,不清理会影响后续请求 | | **最小化作用范围** | 尽量缩小 try 块范围,减少标记生效时间 | | **避免滥用** | 忽略校验/日志会绕过安全机制,需评估风险 | | **组合使用** | 多个标记同时使用时,finally 中需全部清理 | --- ## 7. 完整常量定义 ```java // MetaConstant.java public final static String IGNORE_SCOPE = IS_IGNORE_SCOPE; // "IsIgnoreScope" public final static String IGNORE_VALIDATE = "IgnoreValidate"; // "IgnoreValidate" public final static String IGNORE_LOGIC_DELETE = "IgnoreLogicDelete"; // "IgnoreLogicDelete" public final static String IGNORE_OPERATOR_LOG = "IgnoreOperatorLog"; // "IgnoreOperatorLog" public final static String IGNORE_AUTO_LOG = "IgnoreAutoLog"; // "IgnoreAutoLog" ```
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel