Xbatis 工程助手
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-xbatis-skills。
技能介绍
解决什么问题
在使用 xbatis 开发时,常见的偏移并不是“语法不会写”,而是把其他 ORM 的习惯带进来:
- 跳过 DAO 层,直接在
Service或Controller里创建QueryChain、UpdateChain。 - 简单 CRUD 或常规列表页先写 XML,甚至手工拼接
where、count、limit。 - 联表结果先查实体再逐个字段 copy 到
VO,忽略了select(VO.class)与结果映射能力。 - 逻辑删除、多租户、乐观锁、审计时间等能力被重复手写,DAO 注入代码也在每个业务类里重复。
这份技能用于在新增代码、改造旧代码、审查 PR 时对齐 xbatis 的原生表达方式,而不是把它当成“另一个 MyBatis 封装”来用。
它如何工作
核心决策顺序固定为:
- 先判断能否直接使用 DAO、
BasicMapper、内置 Mapper 方法。 - 再判断是否使用
queryChain()、updateChain()、insertChain()、deleteChain()、对象转条件、QO、Model和结果映射。 - 最后才回退 SQL 模板、原生 SQL 或少量 XML。
按任务类型收敛实现方式:
- 简单 CRUD:优先
getById、getValueById、DAO 基础方法;避免按 id 查询也默认走 Chain,或为基础增删改查写自定义 XML。 - 列表 / 分页 / 条件查询:优先
queryChain()、paging(Pager)、条件对象转where;只有搜索表单、关键词查询才优先forSearch(true)。 - 联表 / VO 查询:优先
.from(...)明确主表、returnType(VO.class)、select(VO.class)、@Fetch、@PutEnumValue和结果映射注解;避免手工 select 字段或查完实体再 copy。 - 写入链:优先在 DAO 内使用
updateChain()、insertChain()、deleteChain(),最终以execute()收尾;单条先查后改优先partialUpdate(...),并用Model收敛入参。 - 复杂 SQL:先尝试 SQL 模板、动态 query、原生 SQL + 动态 where;只有极重报表、数据库语义很强或项目已有成熟 XML 时才回退 XML。
- Mapper 组织:先确认单 Mapper 还是多 Mapper,再创建项目级
BaseDao;业务 DAO 接口继承Dao,实现类继承BaseDao,不要在业务 DAO 里重复setMapper(...)。 - POJO 约束:实体只放表字段;
VO、QO、DTO、Model不使用@Table、@TableId等实体注解;非数据库字段使用@Ignore,审计字段优先使用动态默认值能力。
适用边界与注意点
适合使用:xbatis 实体、Mapper、DAO、Service 初始化,Spring Boot / Solon 接入,以及分页、联表、VO 映射、逻辑删除、多租户、乐观锁、动态默认值和代码审查。
不适合使用:纯 JPA / Hibernate 项目、不使用 xbatis 的普通 MyBatis 项目,或只做宣传介绍、安装教程的任务。
启用前必须先下载当前项目所用 starter 的源码,例如 xbatis/xbatis、xbatis/xbatis-spring-boot-parent 或 xbatis/xbatis-solon-plugin。生成类路径、类名、方法名、注解包名或泛型签名时,不能凭记忆猜测;应从本地源码和当前项目依赖中确认。references 只用于收敛规则,真实 API 以本地源码为准。
使用场景
- 新增或修改 xbatis 实体、Mapper、DAO、Service,需要按框架原生风格落代码。
- 实现分页列表、联表查询和 VO 返回,需要用 queryChain、select(VO.class) 或 @Fetch。
- 接入逻辑删除、多租户、乐观锁和审计时间字段,避免在业务层重复手写条件。
- 审查已有 xbatis 代码,判断是否绕过 DAO 直接创建 Chain 或过早回退 XML。
适合人员
- 维护 xbatis 后端服务的 Java 工程师,需要统一 DAO、Mapper 和 Chain 写法。
- 接入 Spring Boot 或 Solon 的开发者,需要确认 starter、Mapper 扫描和项目 BaseDao 配置。
- 做 Code Review 的技术负责人,需要快速识别偏离 xbatis 习惯的 SQL 与分层问题。
- 编写数据库访问层的成员,需要处理分页、联表、VO 映射和框架特性接入。