Use when generating PO classes or Mapper interfaces for MyBatis/MyBatis-Plus persistence, choosing BaseMapper vs explicit SQL based on access patterns.
Generates MyBatis/MyBatis-Plus PO and Mapper patterns for infra persistence, selecting the right abstraction level based on CRUD complexity and concurrency needs.
REQUIRED: Follow GENERATOR_SKILL_STRUCTURE.md. Variables in VARIABLES.md.
Templates: See references/templates.md.
{{basePackage}}.infra.**.po{{basePackage}}.infra.**.mapperinfra-flyway-migration-generatorinfra-store-implementation-generatorinfra-bc-repository-generator.../infra/.../po/<XxxPO>.java.../infra/.../mapper/<XxxMapper>.java<TableName>PO (or <Context><Entity>PO)<TableName>Mapperinfra.repository.{{bcName}}.* or feature packages like infra.event.outbox.*.BaseMapper<T> when CRUD is standard and constraints are simple.FOR UPDATE SKIP LOCKED is required{{infraModuleDir}}/src/main/java/{{basePackagePath}}/infra/event/outbox/po/OutboxEventPO.java{{infraModuleDir}}/src/main/java/{{basePackagePath}}/infra/event/outbox/mapper/OutboxEventMapper.java{{infraModuleDir}}/src/main/java/{{basePackagePath}}/infra/repository/workflow/mapper/WorkflowStepMapper.java*IT for any mapper using FOR UPDATE SKIP LOCKED or status transitions.| Mistake | Why It Happens | Fix |
|---|---|---|
| Using BaseMapper for claim/update flows with precise predicates | Underestimating concurrency risk | Switch to explicit SQL with status/lock/lease guards for concurrent access patterns |
| PO field names mismatching SQL columns | Migration drift or rename without updating PO | Verify PO fields match migration columns exactly after every schema change |
| Leaking PO types into domain or app layers | Convenience shortcut bypassing converter | Always convert PO ↔ domain at the boundary; PO stays in infra |
Missing @TableName annotation on PO | Copy-paste from another PO without updating | Every PO must declare @TableName("<table>") matching its Flyway table |
Before committing generated/updated code:
mvn -q clean test).mvn -q clean verify to execute *IT.requesting-code-review for the intended commit scope and resolve Critical/Important findings.scaffold-router, infra-bc-repository-generator, dev-workflow-ddd-implementation-workflowinfra-flyway-migration-generator, infra-store-implementation-generator, infra-it-db-generator