#set ($subTable = $subTables.get($subIndex))##当前表
#set ($subColumns = $subJoinColumnsList.get($subIndex))##当前字段数组
#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
package ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName};

import java.util.*;

import ${PageResultClassName};
import ${PageParamClassName};
import ${QueryWrapperClassName};
import ${BaseMapperClassName};
import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO;
import org.apache.ibatis.annotations.Mapper;

/**
 * ${subTable.classComment} Mapper
 *
 * @author ${subTable.author}
 */
@Mapper
public interface ${subTable.className}Mapper extends BaseMapperX<${subTable.className}DO> {

## 情况一：MASTER_ERP 时，需要分查询页子表
#if ( $table.templateType == 11 )
    default PageResult<${subTable.className}DO> selectPage(PageParam reqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
        return selectPage(reqVO, new LambdaQueryWrapperX<${subTable.className}DO>()
            .eq(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField})
            .orderByDesc(${subTable.className}DO::getId));## 大多数情况下，id 倒序

    }
## 主表与子表是一对一时 
    #if (!$subTable.subJoinMany)
        default ${subTable.className}DO selectBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
        return selectOne(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField});
        }
    #end

## 情况二：非 MASTER_ERP 时，需要列表查询子表
#else
    #if ( $subTable.subJoinMany)
    default List<${subTable.className}DO> selectListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
        return selectList(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField});
    }

    #else
    default ${subTable.className}DO selectBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
        return selectOne(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField});
    }

    #end
    #end
    default int deleteBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
        return delete(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField});
    }

}
