---
description: Mapper接口与XML规范，适配达梦8分页、函数、语法
globs: ["**/*Mapper.java","**/*Mapper.xml"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库全局规则优先级最高，其次为Java编码规范。

# Mapper层开发规范（达梦8专属适配）
## 一、Mapper接口规范
1. 存放路径：mapper，命名 XxxMapper；
2. 自定义查询方法命名规范：
    - selectXxxByXxx：单条件查询列表
    - countXxxByXxx：统计数量
    - deleteXxxBatch：批量删除
    - updateXxxBatch：批量更新
4. 方法入参：单参数直接传；多参数使用@Param("xxx")注解；
5. 禁止在Mapper接口编写业务逻辑，仅做数据库CRUD操作。

## 二、Mapper XML 文件规范
1. XML与Mapper接口同目录，文件名与接口名完全一致 XxxMapper.xml；
2. namespace 严格对应Mapper接口全类名；
3. 通用字段复用sql片段，抽取公共查询列、通用条件：
    <sql id="common_column">
        id, creator, create_time, updater, update_time, deleted
    </sql>
4. 分页查询统一使用达梦分页语法 OFFSET #{offset} LIMIT #{pageSize}，禁止MySQL逗号分页；
5. 函数统一使用达梦内置函数 NVL、TO_CHAR、SYSDATE，禁止IFNULL、DATE_FORMAT、NOW()；
6. 所有SQL关键字大写（SELECT、FROM、WHERE、LEFT JOIN、ORDER BY），字段、表名下划线小写；
7. 禁止写SELECT *，必须明确查询需要的字段，减少IO开销。

## 三、MyBatis-Plus Wrapper 查询规范
1. 业务查询统一使用 LambdaQueryWrapperX、LambdaUpdateWrapperX，项目封装适配达梦；
2. 等值查询：eq；模糊查询：like；范围查询：ge、le；
3. 多条件拼接使用链式调用，禁止硬编码SQL字符串；
4. 分页查询调用 mapper.selectPage(page, wrapper)，分页参数由上层PageParam转换；
5. 批量操作优先使用BaseMapperX提供的批量方法：insertBatch、updateBatchById。

## 四、达梦适配强制约束
1. 不使用自增主键、序列，主键由框架雪花ID生成；
2. 关联查询多表时，表别名简洁（t1、t2），避免关键字冲突；
3. 文本模糊查询长度适配达梦VARCHAR，超长文本使用TEXT字段查询；
4. 批量操作单次数据量控制在500条以内，防止达梦事务压力过大；
5. 禁止在XML中使用MySQL专属注释、引擎、字符集配置。

## 五、Mapper开发禁止项
❌ 禁止继承原生BaseMapper，必须BaseMapperX；
❌ 禁止SELECT * 查询所有字段；
❌ 禁止MySQL分页、MySQL专属函数；
❌ 禁止循环调用Mapper单条操作，统一批量方法；
❌ 禁止在XML中硬编码租户ID、软删除条件，统一框架自动填充；
❌ 禁止存储过程、复杂函数在XML中调用，业务逻辑下沉Service层。
