commit ea0efee0746883601b16068945307e480a5eb43a Author: Jeremy Liang Date: Wed Feb 4 03:21:09 2026 +0800 init commit diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1d795f2 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e17ca22 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f49d243 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# tape-mybatis-generator-plugin +> MyBatis 代码生成插件 + + +## Uses +in `pom.xml` +``` + + application + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.4.0 + + src/main/resources/mybatis.generator.xml + true + true + + + + Generate MyBatis Artifacts + deploy + + generate + + + + + + mysql + mysql-connector-java + runtime + 8.0.33 + + + com.iqudoo.framework + tape-mybaits-generator-plugin + 1.0-SNAPSHOT + ${project.basedir}/src/lib/tape-mybaits-generator-plugin-1.0-SNAPSHOT.jar + system + + + + + +``` +in `mybatis.generator.xml` +``` + + + + + + + + + + + + +``` + +## Table Template +``` +DROP TABLE IF EXISTS `your_table_name`; +CREATE TABLE `your_table_name` ( + `guid` bigint(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'GUID', + -- ---------------------------- + -- add your other table field + -- ---------------------------- + `is_hidden` int(0) NOT NULL DEFAULT 0 COMMENT '隐藏标志', + `is_delete` int(0) NOT NULL DEFAULT 0 COMMENT '删除标志', + `delete_token` varchar(32) NULL DEFAULT '' COMMENT '删除令牌', + `data_version` int(0) NOT NULL DEFAULT 0 COMMENT '数据版本', + `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', + `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间', + PRIMARY KEY (`guid`) USING BTREE +) ENGINE = InnoDB COMMENT = '应用基础信息表' ROW_FORMAT = Dynamic; +``` +in `mybatis.generator.xml` +``` + + + +
+``` diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a0fbe36 --- /dev/null +++ b/pom.xml @@ -0,0 +1,93 @@ + + 4.0.0 + + com.iqudoo.framework + tape-mybatis-generator-plugin + 1.0-SNAPSHOT + jar + + + + jcenter + https://oss.jfrog.org/artifactory/libs-release/ + + + jcenter-snapshots + https://oss.jfrog.org/artifactory/libs-snapshot/ + + + + + + org.mybatis.generator + mybatis-generator-core + 1.4.1 + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + + + \ No newline at end of file diff --git a/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..d079541 Binary files /dev/null and b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar differ diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java new file mode 100644 index 0000000..6804699 --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java @@ -0,0 +1,91 @@ +package com.iqudoo.framework.mybatis; + +import com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin; +import org.mybatis.generator.api.IntrospectedTable; +import org.mybatis.generator.api.dom.java.*; +import org.mybatis.generator.api.dom.xml.Attribute; +import org.mybatis.generator.api.dom.xml.Document; +import org.mybatis.generator.api.dom.xml.TextElement; +import org.mybatis.generator.api.dom.xml.XmlElement; + +@SuppressWarnings("unused") +public class TapeMybatisGeneratorPlugin extends AbstractWithLimitPlugin { + + // ============================================ selectPrimaryKeyByExample ========================================== + + @Override + public boolean clientGenerated(Interface interfaze, IntrospectedTable introspectedTable) { + if (introspectedTable.getTargetRuntime() != IntrospectedTable.TargetRuntime.MYBATIS3) { + return true; + } + // 添加接口方法 + if (introspectedTable.getPrimaryKeyColumns().size() <= 0) { + return true; + } + // 获取主键列类型 + FullyQualifiedJavaType primaryType = introspectedTable.getPrimaryKeyColumns().get(0) + .getFullyQualifiedJavaType(); + // 创建返回类型 + FullyQualifiedJavaType returnType = FullyQualifiedJavaType.getNewListInstance(); + returnType.addTypeArgument(primaryType); + // 创建参数类型 + FullyQualifiedJavaType exampleType = new FullyQualifiedJavaType(introspectedTable.getExampleType()); + // selectPrimaryKeyByExample(example) + Method method = new Method("selectPrimaryKeyByExample"); + method.setAbstract(true); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(returnType); + method.addParameter(new Parameter(exampleType, "example")); + interfaze.addMethod(method); + + return super.clientGenerated(interfaze, introspectedTable); + } + + + @Override + public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) { + if (introspectedTable.getTargetRuntime() != IntrospectedTable.TargetRuntime.MYBATIS3) { + return true; + } + if (introspectedTable.getPrimaryKeyColumns().size() <= 0) { + return true; + } + // 获取主键列名 + String primaryKeyColumn = introspectedTable.getPrimaryKeyColumns().get(0) + .getActualColumnName(); + // 获取主键列类型 + String primaryKeyType = introspectedTable.getPrimaryKeyColumns().get(0) + .getFullyQualifiedJavaType().getFullyQualifiedName(); + // 获取对应的 Example 类名 + String exampleType = introspectedTable.getExampleType(); + + // 创建 selectPrimaryKeyByExample 元素 + XmlElement selectPrimaryKeyByExample = new XmlElement("select"); + selectPrimaryKeyByExample.addAttribute(new Attribute("id", "selectPrimaryKeyByExample")); + selectPrimaryKeyByExample.addAttribute(new Attribute("parameterType", exampleType)); + selectPrimaryKeyByExample.addAttribute(new Attribute("resultType", primaryKeyType)); + // 添加selectPrimaryKeyByExample语句 + String selectPrimaryKeyByExampleSql = "select\n" + + " \n" + + " distinct\n" + + " \n" + + " " + primaryKeyColumn + " from " + introspectedTable.getFullyQualifiedTableNameAtRuntime() + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " order by ${orderByClause}\n" + + " "; + selectPrimaryKeyByExample.addElement(new TextElement(selectPrimaryKeyByExampleSql)); + + // with limit + generateLimitElement(selectPrimaryKeyByExample); + + // 将 select 元素添加到 mapper.xml 中 + document.getRootElement().addElement(selectPrimaryKeyByExample); + + return super.sqlMapDocumentGenerated(document, introspectedTable); + } + + +} diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java new file mode 100644 index 0000000..8c293bc --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java @@ -0,0 +1,870 @@ +package com.iqudoo.framework.mybatis; + +import org.mybatis.generator.api.*; +import org.mybatis.generator.api.dom.DefaultJavaFormatter; +import org.mybatis.generator.api.dom.java.*; +import org.mybatis.generator.config.Context; +import org.mybatis.generator.internal.util.StringUtility; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +/** + * MyBatis Generator 1.4.1 + */ +@SuppressWarnings({"DuplicatedCode", "unused"}) +public class TapeRepositoryGeneratorPlugin extends PluginAdapter { + + // 固定配置项 + private String facadeRepositoryPackage = "com.iqudoo.platform.application.facade.repository"; + private String domainRepositoryPackage = "com.iqudoo.platform.application.domain.repository"; + private String modelPackage = "com.iqudoo.platform.application.database.model"; + private String mapperPackage = "com.iqudoo.platform.application.database.mapper"; + private String targetProject = "src/main/java"; + private String viewKeyWords = "VIEW_,V_"; + + // 1.4.1版本专用:Java格式化器 + private JavaFormatter javaFormatter; + + @Override + public void setContext(Context context) { + super.setContext(context); + this.javaFormatter = new DefaultJavaFormatter(); + this.javaFormatter.setContext(context); + } + + @Override + public boolean validate(List warnings) { + return true; + } + + @Override + public void setProperties(Properties properties) { + super.setProperties(properties); + // 读取自定义配置 + if (StringUtility.stringHasValue(properties.getProperty("facadeRepositoryPackage"))) { + facadeRepositoryPackage = properties.getProperty("facadeRepositoryPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("domainRepositoryPackage"))) { + domainRepositoryPackage = properties.getProperty("domainRepositoryPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("modelPackage"))) { + modelPackage = properties.getProperty("modelPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("mapperPackage"))) { + mapperPackage = properties.getProperty("mapperPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("targetProject"))) { + targetProject = properties.getProperty("targetProject"); + } + if (StringUtility.stringHasValue(properties.getProperty("viewKeyWords"))) { + viewKeyWords = properties.getProperty("viewKeyWords").toUpperCase(); + } + } + + /** + * 核心方法:视图表过滤 + 生成完整Repository代码 + */ + @Override + public List contextGenerateAdditionalJavaFiles(IntrospectedTable introspectedTable) { + List generatedJavaFiles = new ArrayList<>(); + + // 视图表过滤逻辑 + String tableName = introspectedTable.getFullyQualifiedTable().getIntrospectedTableName().toUpperCase(); + if (isViewTable(tableName)) { + return generatedJavaFiles; + } + + // 非视图表,正常生成 + String domainObjectName = introspectedTable.getFullyQualifiedTable().getDomainObjectName(); + String exampleClassName = domainObjectName + "Example"; + String mapperClassName = domainObjectName + "Mapper"; + String repositoryInterfaceName = "I" + domainObjectName + "Repository"; + String repositoryImplName = domainObjectName + "RepositoryImpl"; + boolean hasBLOBColumns = hasBLOBColumns(introspectedTable); + + // 生成Repository接口(核心修改:手动添加所有方法,不再继承父接口) + Interface repositoryInterface = generateRepositoryInterface(repositoryInterfaceName, domainObjectName, exampleClassName); + GeneratedJavaFile interfaceFile = new GeneratedJavaFile( + repositoryInterface, + targetProject, + "UTF-8", + javaFormatter + ); + generatedJavaFiles.add(interfaceFile); + + // 生成Repository实现类(逻辑不变) + TopLevelClass repositoryImpl = generateRepositoryImpl( + repositoryImplName, + repositoryInterfaceName, + domainObjectName, + exampleClassName, + mapperClassName, + introspectedTable, + hasBLOBColumns + ); + GeneratedJavaFile implFile = new GeneratedJavaFile( + repositoryImpl, + targetProject, + "UTF-8", + javaFormatter + ); + generatedJavaFiles.add(implFile); + + // 手动写入磁盘 + generateJavaFileToDisk(repositoryInterface, facadeRepositoryPackage); + generateJavaFileToDisk(repositoryImpl, domainRepositoryPackage); + + return generatedJavaFiles; + } + + /** + * 判断是否为视图表(支持多关键字匹配) + */ + private boolean isViewTable(String tableName) { + if (StringUtility.stringHasValue(viewKeyWords)) { + String[] keywords = viewKeyWords.split(","); + for (String keyword : keywords) { + if (tableName.contains(keyword.trim().toUpperCase())) { + return true; + } + } + } + return false; + } + + /** + * 核心修改:生成Repository接口(手动添加所有方法,无继承,匹配指定格式) + */ + private Interface generateRepositoryInterface(String interfaceName, String modelClassName, String exampleClassName) { + Interface repositoryInterface = new Interface(facadeRepositoryPackage + "." + interfaceName); + repositoryInterface.setVisibility(JavaVisibility.PUBLIC); + + // 添加必要的导入(仅保留model和example,移除ModelDataRepository) + repositoryInterface.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + modelClassName)); + repositoryInterface.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + exampleClassName)); + repositoryInterface.addImportedType(new FullyQualifiedJavaType("java.util.List")); + + // 定义方法参数名(首字母小写) + String exampleParamName = lowerFirst(exampleClassName); + + // 1. trashById + Method trashByIdMethod = new Method("trashById"); + trashByIdMethod.setVisibility(JavaVisibility.PUBLIC); + trashByIdMethod.setReturnType(new FullyQualifiedJavaType("int")); + trashByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + trashByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + trashByIdMethod.setAbstract(true); + repositoryInterface.addMethod(trashByIdMethod); + + // 2. trashAll + Method trashAllMethod = new Method("trashAll"); + trashAllMethod.setVisibility(JavaVisibility.PUBLIC); + trashAllMethod.setReturnType(new FullyQualifiedJavaType("int")); + trashAllMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + trashAllMethod.addException(new FullyQualifiedJavaType("Throwable")); + trashAllMethod.setAbstract(true); + repositoryInterface.addMethod(trashAllMethod); + + // 3. deleteById + Method deleteByIdMethod = new Method("deleteById"); + deleteByIdMethod.setVisibility(JavaVisibility.PUBLIC); + deleteByIdMethod.setReturnType(new FullyQualifiedJavaType("int")); + deleteByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + deleteByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("boolean"), "release")); + deleteByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + deleteByIdMethod.setAbstract(true); + repositoryInterface.addMethod(deleteByIdMethod); + + // 4. deleteAll + Method deleteAllMethod = new Method("deleteAll"); + deleteAllMethod.setVisibility(JavaVisibility.PUBLIC); + deleteAllMethod.setReturnType(new FullyQualifiedJavaType("int")); + deleteAllMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + deleteAllMethod.addParameter(new Parameter(new FullyQualifiedJavaType("boolean"), "release")); + deleteAllMethod.addException(new FullyQualifiedJavaType("Throwable")); + deleteAllMethod.setAbstract(true); + repositoryInterface.addMethod(deleteAllMethod); + + // 5. recoverById + Method recoverByIdMethod = new Method("recoverById"); + recoverByIdMethod.setVisibility(JavaVisibility.PUBLIC); + recoverByIdMethod.setReturnType(new FullyQualifiedJavaType("int")); + recoverByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + recoverByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + recoverByIdMethod.setAbstract(true); + repositoryInterface.addMethod(recoverByIdMethod); + + // 6. recoverAll + Method recoverAllMethod = new Method("recoverAll"); + recoverAllMethod.setVisibility(JavaVisibility.PUBLIC); + recoverAllMethod.setReturnType(new FullyQualifiedJavaType("int")); + recoverAllMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + recoverAllMethod.addException(new FullyQualifiedJavaType("Throwable")); + recoverAllMethod.setAbstract(true); + repositoryInterface.addMethod(recoverAllMethod); + + // 7. findNoWhereById + Method findNoWhereByIdMethod = new Method("findNoWhereById"); + findNoWhereByIdMethod.setVisibility(JavaVisibility.PUBLIC); + findNoWhereByIdMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findNoWhereByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + findNoWhereByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + findNoWhereByIdMethod.setAbstract(true); + repositoryInterface.addMethod(findNoWhereByIdMethod); + + // 8. findValidById + Method findValidByIdMethod = new Method("findValidById"); + findValidByIdMethod.setVisibility(JavaVisibility.PUBLIC); + findValidByIdMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findValidByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + findValidByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + findValidByIdMethod.setAbstract(true); + repositoryInterface.addMethod(findValidByIdMethod); + + // 9. findTrashById + Method findTrashByIdMethod = new Method("findTrashById"); + findTrashByIdMethod.setVisibility(JavaVisibility.PUBLIC); + findTrashByIdMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findTrashByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + findTrashByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); + findTrashByIdMethod.setAbstract(true); + repositoryInterface.addMethod(findTrashByIdMethod); + + // 10. findValidOne + Method findValidOneMethod = new Method("findValidOne"); + findValidOneMethod.setVisibility(JavaVisibility.PUBLIC); + findValidOneMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findValidOneMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + findValidOneMethod.addException(new FullyQualifiedJavaType("Throwable")); + findValidOneMethod.setAbstract(true); + repositoryInterface.addMethod(findValidOneMethod); + + // 11. findTrashOne + Method findTrashOneMethod = new Method("findTrashOne"); + findTrashOneMethod.setVisibility(JavaVisibility.PUBLIC); + findTrashOneMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findTrashOneMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + findTrashOneMethod.addException(new FullyQualifiedJavaType("Throwable")); + findTrashOneMethod.setAbstract(true); + repositoryInterface.addMethod(findTrashOneMethod); + + // 12. getValidList + Method getValidListMethod = new Method("getValidList"); + getValidListMethod.setVisibility(JavaVisibility.PUBLIC); + getValidListMethod.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + getValidListMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + getValidListMethod.addException(new FullyQualifiedJavaType("Throwable")); + getValidListMethod.setAbstract(true); + repositoryInterface.addMethod(getValidListMethod); + + // 13. getTrashList + Method getTrashListMethod = new Method("getTrashList"); + getTrashListMethod.setVisibility(JavaVisibility.PUBLIC); + getTrashListMethod.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + getTrashListMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + getTrashListMethod.addException(new FullyQualifiedJavaType("Throwable")); + getTrashListMethod.setAbstract(true); + repositoryInterface.addMethod(getTrashListMethod); + + // 14. countByValid + Method countByValidMethod = new Method("countByValid"); + countByValidMethod.setVisibility(JavaVisibility.PUBLIC); + countByValidMethod.setReturnType(new FullyQualifiedJavaType("long")); + countByValidMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + countByValidMethod.addException(new FullyQualifiedJavaType("Throwable")); + countByValidMethod.setAbstract(true); + repositoryInterface.addMethod(countByValidMethod); + + // 15. countByTrash + Method countByTrashMethod = new Method("countByTrash"); + countByTrashMethod.setVisibility(JavaVisibility.PUBLIC); + countByTrashMethod.setReturnType(new FullyQualifiedJavaType("long")); + countByTrashMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + countByTrashMethod.addException(new FullyQualifiedJavaType("Throwable")); + countByTrashMethod.setAbstract(true); + repositoryInterface.addMethod(countByTrashMethod); + + // 16. insert + Method insertMethod = new Method("insert"); + insertMethod.setVisibility(JavaVisibility.PUBLIC); + insertMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + insertMethod.addParameter(new Parameter(new FullyQualifiedJavaType(modelClassName), "record")); + insertMethod.addException(new FullyQualifiedJavaType("Throwable")); + insertMethod.setAbstract(true); + repositoryInterface.addMethod(insertMethod); + + // 17. update + Method updateMethod = new Method("update"); + updateMethod.setVisibility(JavaVisibility.PUBLIC); + updateMethod.setReturnType(new FullyQualifiedJavaType("int")); + updateMethod.addParameter(new Parameter(new FullyQualifiedJavaType(modelClassName), "record")); + updateMethod.addException(new FullyQualifiedJavaType("Throwable")); + updateMethod.setAbstract(true); + repositoryInterface.addMethod(updateMethod); + + return repositoryInterface; + } + + /** + * 生成Repository实现类(逻辑无修改) + */ + private TopLevelClass generateRepositoryImpl( + String implClassName, + String interfaceName, + String modelClassName, + String exampleClassName, + String mapperClassName, + IntrospectedTable introspectedTable, + boolean hasBLOBColumns) { + + TopLevelClass implClass = new TopLevelClass(domainRepositoryPackage + "." + implClassName); + implClass.setVisibility(JavaVisibility.PUBLIC); + implClass.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")"); + implClass.addAnnotation("@Repository"); + + addImportPackages(implClass, modelClassName, exampleClassName, mapperClassName, interfaceName); + + FullyQualifiedJavaType superInterface = new FullyQualifiedJavaType(facadeRepositoryPackage + "." + interfaceName); + implClass.addSuperInterface(superInterface); + + // 修复Logger字段:添加static final修饰符 + Field loggerField = new Field("LOGGER", new FullyQualifiedJavaType("org.slf4j.Logger")); + loggerField.setVisibility(JavaVisibility.PRIVATE); + loggerField.setStatic(true); + loggerField.setFinal(true); + loggerField.setInitializationString("Tape.getLogger(" + implClassName + ".class)"); + implClass.addField(loggerField); + + String mapperFieldName = lowerFirst(mapperClassName); + Field mapperField = new Field(mapperFieldName, new FullyQualifiedJavaType(mapperPackage + "." + mapperClassName)); + mapperField.setVisibility(JavaVisibility.PRIVATE); + mapperField.addAnnotation("@Resource"); + implClass.addField(mapperField); + + // 原有方法生成逻辑(无修改) + generateFindNoWhereByIdMethod(implClass, modelClassName, exampleClassName); + generateFindValidByIdMethod(implClass, modelClassName, exampleClassName); + generateFindTrashByIdMethod(implClass, modelClassName, exampleClassName); + generateInsertMethod(implClass, modelClassName, mapperFieldName, introspectedTable); + generateUpdateMethod(implClass, modelClassName, exampleClassName, mapperFieldName, introspectedTable, hasBLOBColumns); + generateDeleteByIdMethod(implClass, modelClassName, mapperFieldName); + generateDeleteAllMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + generateTrashByIdMethod(implClass, modelClassName, mapperFieldName); + generateTrashAllMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + generateRecoverByIdMethod(implClass, modelClassName, mapperFieldName); + generateRecoverAllMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + generateFindValidOneMethod(implClass, modelClassName, exampleClassName); + generateFindTrashOneMethod(implClass, modelClassName, exampleClassName); + generateGetValidListMethod(implClass, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateGetTrashListMethod(implClass, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateCountByValidMethod(implClass, exampleClassName, mapperFieldName); + generateCountByTrashMethod(implClass, exampleClassName, mapperFieldName); + + return implClass; + } + + // ------------------------ 所有原有方法(无修改) ------------------------ + private void generateDeleteAllMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + Method method = new Method("deleteAll"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addParameter(new Parameter(new FullyQualifiedJavaType("boolean"), "release")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine("if (release) {"); + method.addBodyLine(" return " + mapperFieldName + ".deleteByExample(" + exampleParamName + ");"); + method.addBodyLine("}"); + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : " + exampleParamName + ".getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue());"); + method.addBodyLine("}"); + method.addBodyLine(modelClassName + " " + lowerFirst(modelClassName) + " = new " + modelClassName + "();"); + method.addBodyLine(lowerFirst(modelClassName) + ".setIsDelete(DatabaseCommonDataIsDeleteEnum.DELETED.getValue());"); + method.addBodyLine(lowerFirst(modelClassName) + ".setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByExampleSelective(" + lowerFirst(modelClassName) + ", " + exampleParamName + ");"); + + implClass.addMethod(method); + } + + private void generateTrashAllMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + Method method = new Method("trashAll"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : " + exampleParamName + ".getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue());"); + method.addBodyLine(" criteria.andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine("}"); + method.addBodyLine(modelClassName + " " + lowerFirst(modelClassName) + " = new " + modelClassName + "();"); + method.addBodyLine(lowerFirst(modelClassName) + ".setIsHidden(DatabaseCommonDataIsHiddenEnum.HIDDEN.getValue());"); + method.addBodyLine(lowerFirst(modelClassName) + ".setDeleteToken(" + lowerFirst(modelClassName) + ".getGuid() + \"\");"); + method.addBodyLine(lowerFirst(modelClassName) + ".setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByExampleSelective(" + lowerFirst(modelClassName) + ", " + exampleParamName + ");"); + + implClass.addMethod(method); + } + + private void generateRecoverAllMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + Method method = new Method("recoverAll"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : " + exampleParamName + ".getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue());"); + method.addBodyLine(" criteria.andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.HIDDEN.getValue());"); + method.addBodyLine("}"); + method.addBodyLine(modelClassName + " " + lowerFirst(modelClassName) + " = new " + modelClassName + "();"); + method.addBodyLine(lowerFirst(modelClassName) + ".setIsHidden(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine(lowerFirst(modelClassName) + ".setDeleteToken(\"VALID\");"); + method.addBodyLine(lowerFirst(modelClassName) + ".setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByExampleSelective(" + lowerFirst(modelClassName) + ", " + exampleParamName + ");"); + + implClass.addMethod(method); + } + + private void generateJavaFileToDisk(Interface intf, String packageName) { + try { + String packagePath = packageName.replace('.', File.separatorChar); + File targetDir = new File(targetProject, packagePath); + if (!targetDir.exists()) { + boolean mkdirs = targetDir.mkdirs(); + if (!mkdirs) { + throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); + } + } + String className = intf.getType().getShortName(); + File javaFile = new File(targetDir, className + ".java"); + String content = javaFormatter.getFormattedContent(intf); + java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); + System.out.println("成功生成接口文件:" + javaFile.getAbsolutePath()); + } catch (Exception e) { + throw new RuntimeException("生成Repository接口失败:" + intf.getType().getShortName(), e); + } + } + + private void generateJavaFileToDisk(TopLevelClass clazz, String packageName) { + try { + String packagePath = packageName.replace('.', File.separatorChar); + File targetDir = new File(targetProject, packagePath); + if (!targetDir.exists()) { + boolean mkdirs = targetDir.mkdirs(); + if (!mkdirs) { + throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); + } + } + + String className = clazz.getType().getShortName(); + File javaFile = new File(targetDir, className + ".java"); + String content = javaFormatter.getFormattedContent(clazz); + java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); + System.out.println("成功生成实现类文件:" + javaFile.getAbsolutePath()); + } catch (Exception e) { + throw new RuntimeException("生成Repository实现类失败:" + clazz.getType().getShortName(), e); + } + } + + private boolean hasBLOBColumns(IntrospectedTable introspectedTable) { + for (IntrospectedColumn column : introspectedTable.getAllColumns()) { + if (column.isBLOBColumn()) { + return true; + } + } + return false; + } + + private void addImportPackages(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperClassName, String interfaceName) { + implClass.addImportedType(new FullyQualifiedJavaType("com.iqudoo.framework.tape.Tape")); + implClass.addImportedType(new FullyQualifiedJavaType("com.iqudoo.framework.tape.modules.utils.SnowflakeUtil")); + implClass.addImportedType(new FullyQualifiedJavaType("com.iqudoo.framework.tape.modules.crud.DatabaseCommonDataIsDeleteEnum")); + implClass.addImportedType(new FullyQualifiedJavaType("com.iqudoo.framework.tape.modules.crud.DatabaseCommonDataIsHiddenEnum")); + implClass.addImportedType(new FullyQualifiedJavaType("com.iqudoo.framework.tape.modules.crud.DatabaseErrorConstants")); + implClass.addImportedType(new FullyQualifiedJavaType(mapperPackage + "." + mapperClassName)); + implClass.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + modelClassName)); + implClass.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + exampleClassName)); + implClass.addImportedType(new FullyQualifiedJavaType(facadeRepositoryPackage + "." + interfaceName)); + implClass.addImportedType(new FullyQualifiedJavaType("org.slf4j.Logger")); + implClass.addImportedType(new FullyQualifiedJavaType("org.springframework.stereotype.Repository")); + implClass.addImportedType(new FullyQualifiedJavaType("javax.annotation.Resource")); + implClass.addImportedType(new FullyQualifiedJavaType("java.util.ArrayList")); + implClass.addImportedType(new FullyQualifiedJavaType("java.util.Date")); + implClass.addImportedType(new FullyQualifiedJavaType("java.util.List")); + } + + private void generateFindNoWhereByIdMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + Method method = new Method("findNoWhereById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = findValidById(id);"); + method.addBodyLine("if (aDo == null) {"); + method.addBodyLine(" aDo = findTrashById(id);"); + method.addBodyLine("}"); + method.addBodyLine("return aDo;"); + + implClass.addMethod(method); + } + + private void generateFindValidByIdMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + Method method = new Method("findValidById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(exampleClassName + " doExample = new " + exampleClassName + "();"); + method.addBodyLine("doExample.createCriteria().andGuidEqualTo(id);"); + method.addBodyLine("return findValidOne(doExample);"); + + implClass.addMethod(method); + } + + private void generateFindTrashByIdMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + Method method = new Method("findTrashById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(exampleClassName + " doExample = new " + exampleClassName + "();"); + method.addBodyLine("doExample.createCriteria().andGuidEqualTo(id);"); + method.addBodyLine("return findTrashOne(doExample);"); + + implClass.addMethod(method); + } + + private void generateInsertMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName, IntrospectedTable introspectedTable) { + Method method = new Method("insert"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + method.addParameter(new Parameter(new FullyQualifiedJavaType(modelClassName), "record")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = new " + modelClassName + "();"); + method.addBodyLine("if (record.getGuid() != null) {"); + method.addBodyLine(" aDo.setGuid(record.getGuid());"); + method.addBodyLine("} else {"); + method.addBodyLine(" Long guid = SnowflakeUtil.nextId();"); + method.addBodyLine(" aDo.setGuid(guid);"); + method.addBodyLine("}"); + + for (IntrospectedColumn column : introspectedTable.getAllColumns()) { + String fieldName = column.getJavaProperty(); + String setterMethod = "set" + upperFirst(fieldName); + String getterMethod = "get" + upperFirst(fieldName); + + if ("guid".equals(fieldName) || "isDelete".equals(fieldName) || "isHidden".equals(fieldName) + || "deleteToken".equals(fieldName) || "dataVersion".equals(fieldName) + || "createTime".equals(fieldName) || "updateTime".equals(fieldName)) { + continue; + } + method.addBodyLine("aDo." + setterMethod + "(record." + getterMethod + "());"); + } + + method.addBodyLine("aDo.setIsDelete(DatabaseCommonDataIsDeleteEnum.NONE.getValue());"); + method.addBodyLine("aDo.setIsHidden(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine("aDo.setDeleteToken(\"VALID\");"); + method.addBodyLine("aDo.setDataVersion(1);"); + method.addBodyLine("aDo.setCreateTime(new Date());"); + method.addBodyLine("aDo.setUpdateTime(new Date());"); + + method.addBodyLine("int count = " + mapperFieldName + ".insert(aDo);"); + method.addBodyLine("if (count > 0) {"); + method.addBodyLine(" return aDo;"); + method.addBodyLine("}"); + + method.addBodyLine("// 更新当前数据版本号和GUID"); + method.addBodyLine("record.setGuid(aDo.getGuid());"); + method.addBodyLine("record.setDataVersion(aDo.getDataVersion());"); + method.addBodyLine("record.setCreateTime(aDo.getCreateTime());"); + method.addBodyLine("record.setUpdateTime(aDo.getUpdateTime());"); + method.addBodyLine("LOGGER.error(\"Database write failed, " + modelClassName + ": {}\", aDo);"); + method.addBodyLine("throw DatabaseErrorConstants.DATABASE_WRITE_ERROR;"); + + implClass.addMethod(method); + } + + private void generateUpdateMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, + String mapperFieldName, IntrospectedTable introspectedTable, boolean hasBLOBColumns) { + Method method = new Method("update"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + method.addParameter(new Parameter(new FullyQualifiedJavaType(modelClassName), "record")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = findValidById(record.getGuid());"); + method.addBodyLine("if (aDo == null) {"); + method.addBodyLine(" throw DatabaseErrorConstants.DATABASE_RECORD_NOT_FOUND;"); + method.addBodyLine("}"); + + for (IntrospectedColumn column : introspectedTable.getAllColumns()) { + String fieldName = column.getJavaProperty(); + String setterMethod = "set" + upperFirst(fieldName); + String getterMethod = "get" + upperFirst(fieldName); + + if ("guid".equals(fieldName) || "isDelete".equals(fieldName) || "isHidden".equals(fieldName) + || "deleteToken".equals(fieldName) || "dataVersion".equals(fieldName) + || "createTime".equals(fieldName) || "updateTime".equals(fieldName)) { + continue; + } + method.addBodyLine("if (record." + getterMethod + "() != null) {"); + method.addBodyLine(" aDo." + setterMethod + "(record." + getterMethod + "());"); + method.addBodyLine("}"); + } + + method.addBodyLine(exampleClassName + " updateWhere = new " + exampleClassName + "();"); + method.addBodyLine("Integer lockDataVersion = record.getDataVersion();"); + method.addBodyLine("if (lockDataVersion == null) {"); + method.addBodyLine(" lockDataVersion = aDo.getDataVersion();"); + method.addBodyLine("}"); + method.addBodyLine("updateWhere.createCriteria()"); + method.addBodyLine(" .andGuidEqualTo(aDo.getGuid())"); + method.addBodyLine(" .andDataVersionEqualTo(lockDataVersion);"); + method.addBodyLine("aDo.setDataVersion(aDo.getDataVersion() + 1);"); + method.addBodyLine("aDo.setUpdateTime(new Date());"); + method.addBodyLine("// 更新当前数据版本号"); + method.addBodyLine("record.setDataVersion(aDo.getDataVersion());"); + method.addBodyLine("record.setUpdateTime(aDo.getUpdateTime());"); + + String updateMethod = hasBLOBColumns ? "updateByExampleWithBLOBs" : "updateByExample"; + method.addBodyLine("return " + mapperFieldName + "." + updateMethod + "(aDo, updateWhere);"); + + implClass.addMethod(method); + } + + private void generateDeleteByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName) { + Method method = new Method("deleteById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addParameter(new Parameter(new FullyQualifiedJavaType("boolean"), "release")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = findValidById(id);"); + method.addBodyLine("if (aDo == null) {"); + method.addBodyLine(" return 0;"); + method.addBodyLine("}"); + method.addBodyLine("if (release) {"); + method.addBodyLine(" return " + mapperFieldName + ".deleteByPrimaryKey(aDo.getGuid());"); + method.addBodyLine("}"); + method.addBodyLine("aDo.setIsDelete(DatabaseCommonDataIsDeleteEnum.DELETED.getValue());"); + method.addBodyLine("aDo.setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByPrimaryKey(aDo);"); + + implClass.addMethod(method); + } + + private void generateTrashByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName) { + Method method = new Method("trashById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = findValidById(id);"); + method.addBodyLine("if (aDo == null) {"); + method.addBodyLine(" return 0;"); + method.addBodyLine("}"); + method.addBodyLine("aDo.setIsHidden(DatabaseCommonDataIsHiddenEnum.HIDDEN.getValue());"); + method.addBodyLine("aDo.setDeleteToken(aDo.getGuid() + \"\");"); + method.addBodyLine("aDo.setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByPrimaryKey(aDo);"); + + implClass.addMethod(method); + } + + private void generateRecoverByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName) { + Method method = new Method("recoverById"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("int")); + method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(modelClassName + " aDo = findTrashById(id);"); + method.addBodyLine("if (aDo == null) {"); + method.addBodyLine(" return 0;"); + method.addBodyLine("}"); + method.addBodyLine("if (aDo.getIsDelete() == DatabaseCommonDataIsDeleteEnum.DELETED.getValue()) {"); + method.addBodyLine(" return 0;"); + method.addBodyLine("}"); + method.addBodyLine("aDo.setIsHidden(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine("aDo.setDeleteToken(\"VALID\");"); + method.addBodyLine("aDo.setUpdateTime(new Date());"); + method.addBodyLine("return " + mapperFieldName + ".updateByPrimaryKey(aDo);"); + + implClass.addMethod(method); + } + + private void generateFindValidOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + Method method = new Method("findValidOne"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + String exampleParamName = exampleClassName.substring(0, 1).toLowerCase() + exampleClassName.substring(1); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(exampleParamName + ".usePage(1, 1);"); + method.addBodyLine("List<" + modelClassName + "> dataList = getValidList(" + exampleParamName + ");"); + method.addBodyLine("if (dataList != null && dataList.size() > 0) {"); + method.addBodyLine(" return dataList.get(0);"); + method.addBodyLine("}"); + method.addBodyLine("return null;"); + + implClass.addMethod(method); + } + + private void generateFindTrashOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + Method method = new Method("findTrashOne"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + String exampleParamName = exampleClassName.substring(0, 1).toLowerCase() + exampleClassName.substring(1); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine(exampleParamName + ".usePage(1, 1);"); + method.addBodyLine("List<" + modelClassName + "> dataList = getTrashList(" + exampleParamName + ");"); + method.addBodyLine("if (dataList != null && dataList.size() > 0) {"); + method.addBodyLine(" return dataList.get(0);"); + method.addBodyLine("}"); + method.addBodyLine("return null;"); + + implClass.addMethod(method); + } + + private void generateGetValidListMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, + String mapperFieldName, boolean hasBLOBColumns) { + Method method = new Method("getValidList"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), "example")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : example.getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue())"); + method.addBodyLine(" .andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getRows() != null && example.getOffset() != null) {"); + method.addBodyLine(" List primaryKeyList = " + mapperFieldName + ".selectPrimaryKeyByExample(example);"); + method.addBodyLine(" if (primaryKeyList == null || primaryKeyList.size() == 0) {"); + method.addBodyLine(" return new ArrayList<>();"); + method.addBodyLine(" }"); + method.addBodyLine(" String oldOrderByClause = example.getOrderByClause();"); + method.addBodyLine(" example = new " + exampleClassName + "();"); + method.addBodyLine(" example.createCriteria().andGuidIn(primaryKeyList);"); + method.addBodyLine(" example.setOrderByClause(oldOrderByClause);"); + method.addBodyLine("}"); + + String selectMethod = hasBLOBColumns ? "selectByExampleWithBLOBs" : "selectByExample"; + method.addBodyLine("return " + mapperFieldName + "." + selectMethod + "(example);"); + + implClass.addMethod(method); + } + + private void generateGetTrashListMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, + String mapperFieldName, boolean hasBLOBColumns) { + Method method = new Method("getTrashList"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), "example")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : example.getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue())"); + method.addBodyLine(" .andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.HIDDEN.getValue());"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getRows() != null && example.getOffset() != null) {"); + method.addBodyLine(" List primaryKeyList = " + mapperFieldName + ".selectPrimaryKeyByExample(example);"); + method.addBodyLine(" if (primaryKeyList == null || primaryKeyList.size() == 0) {"); + method.addBodyLine(" return new ArrayList<>();"); + method.addBodyLine(" }"); + method.addBodyLine(" String oldOrderByClause = example.getOrderByClause();"); + method.addBodyLine(" example = new " + exampleClassName + "();"); + method.addBodyLine(" example.createCriteria().andGuidIn(primaryKeyList);"); + method.addBodyLine(" example.setOrderByClause(oldOrderByClause);"); + method.addBodyLine("}"); + + String selectMethod = hasBLOBColumns ? "selectByExampleWithBLOBs" : "selectByExample"; + method.addBodyLine("return " + mapperFieldName + "." + selectMethod + "(example);"); + + implClass.addMethod(method); + } + + private void generateCountByValidMethod(TopLevelClass implClass, String exampleClassName, String mapperFieldName) { + Method method = new Method("countByValid"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("long")); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), "example")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : example.getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue())"); + method.addBodyLine(" .andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.NONE.getValue());"); + method.addBodyLine("}"); + method.addBodyLine("return " + mapperFieldName + ".countByExample(example);"); + + implClass.addMethod(method); + } + + private void generateCountByTrashMethod(TopLevelClass implClass, String exampleClassName, String mapperFieldName) { + Method method = new Method("countByTrash"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("long")); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), "example")); + method.addException(new FullyQualifiedJavaType("Throwable")); + + method.addBodyLine("for (" + exampleClassName + ".Criteria criteria : example.getOredCriteria()) {"); + method.addBodyLine(" criteria.andIsDeleteEqualTo(DatabaseCommonDataIsDeleteEnum.NONE.getValue())"); + method.addBodyLine(" .andIsHiddenEqualTo(DatabaseCommonDataIsHiddenEnum.HIDDEN.getValue());"); + method.addBodyLine("}"); + method.addBodyLine("return " + mapperFieldName + ".countByExample(example);"); + + implClass.addMethod(method); + } + + private String upperFirst(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); + } + + private String lowerFirst(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toLowerCase() + str.substring(1); + } + +} \ No newline at end of file diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java new file mode 100644 index 0000000..3274b48 --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java @@ -0,0 +1,368 @@ +package com.iqudoo.framework.mybatis; + +import org.mybatis.generator.api.GeneratedJavaFile; +import org.mybatis.generator.api.IntrospectedTable; +import org.mybatis.generator.api.JavaFormatter; +import org.mybatis.generator.api.PluginAdapter; +import org.mybatis.generator.api.dom.DefaultJavaFormatter; +import org.mybatis.generator.api.dom.java.*; +import org.mybatis.generator.config.Context; +import org.mybatis.generator.internal.util.StringUtility; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +/** + * MyBatis Generator 1.4.1 适配版:视图表专用 RepoView 生成插件 + */ +@SuppressWarnings("DuplicatedCode") +public class TapeRepoviewGeneratorPlugin extends PluginAdapter { + + // 视图Repo包配置(可通过配置文件自定义) + private String facadeRepoviewPackage = "com.iqudoo.platform.application.facade.repoview"; + private String domainRepoviewPackage = "com.iqudoo.platform.application.domain.repoview"; + private String modelPackage = "com.iqudoo.platform.application.database.model"; + private String mapperPackage = "com.iqudoo.platform.application.database.mapper"; + private String targetProject = "src/main/java"; + + // 视图名称关键字(可配置) + private String viewKeyWords = "VIEW_,V_"; + + // 1.4.1版本专用格式化器 + private JavaFormatter javaFormatter; + + @Override + public void setContext(Context context) { + super.setContext(context); + this.javaFormatter = new DefaultJavaFormatter(); + this.javaFormatter.setContext(context); + } + + @Override + public boolean validate(List warnings) { + return true; + } + + @Override + public void setProperties(Properties properties) { + super.setProperties(properties); + // 读取自定义配置 + if (StringUtility.stringHasValue(properties.getProperty("facadeRepoviewPackage"))) { + facadeRepoviewPackage = properties.getProperty("facadeRepoviewPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("domainRepoviewPackage"))) { + domainRepoviewPackage = properties.getProperty("domainRepoviewPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("modelPackage"))) { + modelPackage = properties.getProperty("modelPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("mapperPackage"))) { + mapperPackage = properties.getProperty("mapperPackage"); + } + if (StringUtility.stringHasValue(properties.getProperty("targetProject"))) { + targetProject = properties.getProperty("targetProject"); + } + if (StringUtility.stringHasValue(properties.getProperty("viewKeyWords"))) { + viewKeyWords = properties.getProperty("viewKeyWords").toUpperCase(); + } + } + + /** + * 核心方法:仅为视图表生成 RepoView 代码 + */ + @Override + public List contextGenerateAdditionalJavaFiles(IntrospectedTable introspectedTable) { + List generatedJavaFiles = new ArrayList<>(); + + // 仅处理视图表,非视图表直接返回 + String tableName = introspectedTable.getFullyQualifiedTable().getIntrospectedTableName().toUpperCase(); + if (!isViewTable(tableName)) { + return generatedJavaFiles; + } + + // 1. 获取视图表元数据 + String domainObjectName = introspectedTable.getFullyQualifiedTable().getDomainObjectName(); + String exampleClassName = domainObjectName + "Example"; + String mapperClassName = domainObjectName + "Mapper"; + String repoInterfaceName = "I" + domainObjectName + "Repo"; + String repoImplName = domainObjectName + "RepoImpl"; + + // 2. 生成视图Repo接口(核心修改:移除继承,手动添加方法) + Interface repoInterface = generateRepoViewInterface(repoInterfaceName, domainObjectName, exampleClassName); + GeneratedJavaFile interfaceFile = new GeneratedJavaFile( + repoInterface, + targetProject, + "UTF-8", + javaFormatter + ); + generatedJavaFiles.add(interfaceFile); + + // 3. 生成视图Repo实现类 + TopLevelClass repoImpl = generateRepoViewImpl( + repoImplName, + repoInterfaceName, + domainObjectName, + exampleClassName, + mapperClassName + ); + GeneratedJavaFile implFile = new GeneratedJavaFile( + repoImpl, + targetProject, + "UTF-8", + javaFormatter + ); + generatedJavaFiles.add(implFile); + + // 4. 手动写入磁盘(兼容1.4.1) + generateJavaFileToDisk(repoInterface, facadeRepoviewPackage); + generateJavaFileToDisk(repoImpl, domainRepoviewPackage); + + return generatedJavaFiles; + } + + /** + * 判断是否为视图表(关键字匹配 + MBG原生视图配置) + */ + private boolean isViewTable(String tableName) { + // 关键字匹配 + if (StringUtility.stringHasValue(viewKeyWords)) { + String[] keywords = viewKeyWords.split(","); + for (String keyword : keywords) { + if (tableName.contains(keyword.trim().toUpperCase())) { + return true; + } + } + } + return false; + } + + /** + * 核心修改:生成视图Repo接口(移除继承,手动添加指定方法) + */ + private Interface generateRepoViewInterface(String interfaceName, String modelClassName, String exampleClassName) { + Interface repoInterface = new Interface(facadeRepoviewPackage + "." + interfaceName); + repoInterface.setVisibility(JavaVisibility.PUBLIC); + + // 添加必要的导入包(仅保留model、example、List) + repoInterface.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + modelClassName)); + repoInterface.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + exampleClassName)); + repoInterface.addImportedType(new FullyQualifiedJavaType("java.util.List")); + + // 定义方法参数名(首字母小写) + String exampleParamName = lowerFirst(exampleClassName); + + // 1. 添加findOne方法 + Method findOneMethod = new Method("findOne"); + findOneMethod.setVisibility(JavaVisibility.PUBLIC); + findOneMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); + findOneMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + findOneMethod.addException(new FullyQualifiedJavaType("Throwable")); + findOneMethod.setAbstract(true); + repoInterface.addMethod(findOneMethod); + + // 2. 添加getList方法 + Method getListMethod = new Method("getList"); + getListMethod.setVisibility(JavaVisibility.PUBLIC); + getListMethod.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + getListMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + getListMethod.addException(new FullyQualifiedJavaType("Throwable")); + getListMethod.setAbstract(true); + repoInterface.addMethod(getListMethod); + + // 3. 添加count方法 + Method countMethod = new Method("count"); + countMethod.setVisibility(JavaVisibility.PUBLIC); + countMethod.setReturnType(new FullyQualifiedJavaType("long")); + countMethod.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + countMethod.addException(new FullyQualifiedJavaType("Throwable")); + countMethod.setAbstract(true); + repoInterface.addMethod(countMethod); + + return repoInterface; + } + + /** + * 生成视图Repo实现类(逻辑不变,仅适配新接口) + */ + private TopLevelClass generateRepoViewImpl( + String implClassName, + String interfaceName, + String modelClassName, + String exampleClassName, + String mapperClassName) { + + TopLevelClass implClass = new TopLevelClass(domainRepoviewPackage + "." + implClassName); + implClass.setVisibility(JavaVisibility.PUBLIC); + implClass.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")"); + implClass.addAnnotation("@Repository"); + + // 添加导入包(移除ModelViewRepository相关导入) + addImportPackages(implClass, modelClassName, exampleClassName, mapperClassName, interfaceName); + + // 实现Repo接口 + FullyQualifiedJavaType superInterface = new FullyQualifiedJavaType(facadeRepoviewPackage + "." + interfaceName); + implClass.addSuperInterface(superInterface); + + // 添加Mapper字段 + String mapperFieldName = lowerFirst(mapperClassName); + Field mapperField = new Field(mapperFieldName, new FullyQualifiedJavaType(mapperPackage + "." + mapperClassName)); + mapperField.setVisibility(JavaVisibility.PRIVATE); + mapperField.addAnnotation("@Resource"); + implClass.addField(mapperField); + + // 生成findOne方法 + generateFindOneMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + // 生成getList方法 + generateGetListMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + // 生成count方法 + generateCountMethod(implClass, exampleClassName, mapperFieldName); + + return implClass; + } + + /** + * 添加实现类所需的导入包(移除ModelViewRepository相关) + */ + private void addImportPackages(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperClassName, String interfaceName) { + // Mapper + implClass.addImportedType(new FullyQualifiedJavaType(mapperPackage + "." + mapperClassName)); + // Model & Example + implClass.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + modelClassName)); + implClass.addImportedType(new FullyQualifiedJavaType(modelPackage + "." + exampleClassName)); + // Repo接口 + implClass.addImportedType(new FullyQualifiedJavaType(facadeRepoviewPackage + "." + interfaceName)); + // 注解&工具类 + implClass.addImportedType(new FullyQualifiedJavaType("org.springframework.stereotype.Repository")); + implClass.addImportedType(new FullyQualifiedJavaType("javax.annotation.Resource")); + implClass.addImportedType(new FullyQualifiedJavaType("java.util.List")); + } + + /** + * 生成findOne方法 + */ + private void generateFindOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + Method method = new Method("findOne"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType(modelClassName)); + // 参数名匹配示例(首字母小写) + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine(exampleParamName + ".usePage(1, 1);"); + method.addBodyLine("List<" + modelClassName + "> dataList = getList(" + exampleParamName + ");"); + method.addBodyLine("if (dataList != null && dataList.size() > 0) {"); + method.addBodyLine(" return dataList.get(0);"); + method.addBodyLine("}"); + method.addBodyLine("return null;"); + + implClass.addMethod(method); + } + + /** + * 生成getList方法 + */ + private void generateGetListMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + Method method = new Method("getList"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("List<" + modelClassName + ">")); + // 参数名匹配示例(首字母小写) + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine("return " + mapperFieldName + ".selectByExample(" + exampleParamName + ");"); + + implClass.addMethod(method); + } + + /** + * 生成count方法 + */ + private void generateCountMethod(TopLevelClass implClass, String exampleClassName, String mapperFieldName) { + Method method = new Method("count"); + method.addAnnotation("@Override"); + method.setVisibility(JavaVisibility.PUBLIC); + method.setReturnType(new FullyQualifiedJavaType("long")); + // 参数名匹配示例(首字母小写) + String exampleParamName = lowerFirst(exampleClassName); + method.addParameter(new Parameter(new FullyQualifiedJavaType(exampleClassName), exampleParamName)); + method.addException(new FullyQualifiedJavaType("Throwable")); + + // 方法体 + method.addBodyLine("return " + mapperFieldName + ".countByExample(" + exampleParamName + ");"); + + implClass.addMethod(method); + } + + /** + * 手动将Java文件写入磁盘 + */ + private void generateJavaFileToDisk(Interface intf, String packageName) { + try { + String packagePath = packageName.replace('.', File.separatorChar); + File targetDir = new File(targetProject, packagePath); + if (!targetDir.exists()) { + boolean mkdirs = targetDir.mkdirs(); + if (!mkdirs) { + throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); + } + } + String className = intf.getType().getShortName(); + File javaFile = new File(targetDir, className + ".java"); + String content = javaFormatter.getFormattedContent(intf); + java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); + System.out.println("成功生成视图Repo接口:" + javaFile.getAbsolutePath()); + } catch (Exception e) { + throw new RuntimeException("生成视图Repo接口失败:" + intf.getType().getShortName(), e); + } + } + + private void generateJavaFileToDisk(TopLevelClass clazz, String packageName) { + try { + String packagePath = packageName.replace('.', File.separatorChar); + File targetDir = new File(targetProject, packagePath); + if (!targetDir.exists()) { + boolean mkdirs = targetDir.mkdirs(); + if (!mkdirs) { + throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); + } + } + String className = clazz.getType().getShortName(); + File javaFile = new File(targetDir, className + ".java"); + String content = javaFormatter.getFormattedContent(clazz); + java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); + System.out.println("成功生成视图Repo实现类:" + javaFile.getAbsolutePath()); + } catch (Exception e) { + throw new RuntimeException("生成视图Repo实现类失败:" + clazz.getType().getShortName(), e); + } + } + + /** + * 字符串首字母小写 + */ + private String lowerFirst(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toLowerCase() + str.substring(1); + } + + /** + * 字符串首字母大写(备用) + */ + private String upperFirst(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); + } + +} \ No newline at end of file diff --git a/src/main/java/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.java new file mode 100644 index 0000000..16196de --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.java @@ -0,0 +1,229 @@ +package com.iqudoo.framework.mybatis.abstracts; + +import com.iqudoo.framework.mybatis.hook.ISelectSelectivePluginHook; +import com.iqudoo.framework.mybatis.utils.FormatTools; +import com.iqudoo.framework.mybatis.utils.ElementTools; +import org.mybatis.generator.api.IntrospectedTable; +import org.mybatis.generator.api.PluginAdapter; +import org.mybatis.generator.api.dom.java.*; +import org.mybatis.generator.api.dom.xml.Attribute; +import org.mybatis.generator.api.dom.xml.TextElement; +import org.mybatis.generator.api.dom.xml.XmlElement; + +import java.util.List; + +public abstract class AbstractWithLimitPlugin extends PluginAdapter implements ISelectSelectivePluginHook { + + private final static int DEFAULT_START_PAGE = 1; + private int startPage = 1; + + @Override + public boolean validate(List list) { + return true; + } + + @Override + public void initialized(IntrospectedTable introspectedTable) { + super.initialized(introspectedTable); + this.startPage = DEFAULT_START_PAGE; + } + + @Override + public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { + PrimitiveTypeWrapper integerWrapper = FullyQualifiedJavaType.getIntInstance().getPrimitiveTypeWrapper(); + // 添加minPageNum、defaultPageSize和maxPageSize字段 + Field maxPageSizeField = ElementTools.generateField( + "maxPageSize", + JavaVisibility.PROTECTED, + integerWrapper, + "100" + ); + topLevelClass.addField(maxPageSizeField); + + Field defaultPageSizeField = ElementTools.generateField( + "defaultPageSize", + JavaVisibility.PROTECTED, + integerWrapper, + "20" + ); + topLevelClass.addField(defaultPageSizeField); + + Field minPageNumField = ElementTools.generateField( + "minPageNum", + JavaVisibility.PROTECTED, + integerWrapper, + startPage + "" + ); + topLevelClass.addField(minPageNumField); + + // 添加offset和rows字段 + Field offsetField = ElementTools.generateField( + "offset", + JavaVisibility.PROTECTED, + integerWrapper, + null + ); + topLevelClass.addField(offsetField); + + Field rowsField = ElementTools.generateField( + "rows", + JavaVisibility.PROTECTED, + integerWrapper, + null + ); + topLevelClass.addField(rowsField); + + // 增加getter && setter 方法 + Method mSetMaxPageSize = ElementTools.generateSetterMethod(maxPageSizeField); + FormatTools.addMethodWithBestPosition(topLevelClass, mSetMaxPageSize); + + Method mGetMaxPageSize = ElementTools.generateGetterMethod(maxPageSizeField); + FormatTools.addMethodWithBestPosition(topLevelClass, mGetMaxPageSize); + + Method mSetDefaultPageSize = ElementTools.generateSetterMethod(defaultPageSizeField); + FormatTools.addMethodWithBestPosition(topLevelClass, mSetDefaultPageSize); + + Method mGetDefaultPageSize = ElementTools.generateGetterMethod(defaultPageSizeField); + FormatTools.addMethodWithBestPosition(topLevelClass, mGetDefaultPageSize); + + Method mSetMinPageNum = ElementTools.generateSetterMethod(minPageNumField); + FormatTools.addMethodWithBestPosition(topLevelClass, mSetMinPageNum); + + Method mGetMinPageNum = ElementTools.generateGetterMethod(minPageNumField); + FormatTools.addMethodWithBestPosition(topLevelClass, mGetMinPageNum); + + Method mSetOffset = ElementTools.generateSetterMethod(offsetField); + FormatTools.addMethodWithBestPosition(topLevelClass, mSetOffset); + + Method mGetOffset = ElementTools.generateGetterMethod(offsetField); + FormatTools.addMethodWithBestPosition(topLevelClass, mGetOffset); + + Method mSetRows = ElementTools.generateSetterMethod(rowsField); + FormatTools.addMethodWithBestPosition(topLevelClass, mSetRows); + + Method mGetRows = ElementTools.generateGetterMethod(rowsField); + FormatTools.addMethodWithBestPosition(topLevelClass, mGetRows); + + // 提供几个快捷方法 + Method setLimit = ElementTools.generateMethod( + "limit", + JavaVisibility.PUBLIC, + topLevelClass.getType(), + new Parameter(integerWrapper, "rows") + ); + setLimit = ElementTools.generateMethodBody( + setLimit, + "this.rows = rows;", + "return this;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, setLimit); + + Method setLimit2 = ElementTools.generateMethod( + "limit", + JavaVisibility.PUBLIC, + topLevelClass.getType(), + new Parameter(integerWrapper, "offset"), + new Parameter(integerWrapper, "rows") + ); + setLimit2 = ElementTools.generateMethodBody( + setLimit2, + "this.offset = offset;", + "this.rows = rows;", + "return this;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, setLimit2); + + Method usePage = ElementTools.generateMethod( + "usePage", + JavaVisibility.PUBLIC, + topLevelClass.getType(), + new Parameter(integerWrapper, "pageNum"), + new Parameter(integerWrapper, "pageSize") + ); + usePage = ElementTools.generateMethodBody( + usePage, + "pageSize = pageSize == null || pageSize <= 0 ? this.defaultPageSize : pageSize;", + "pageNum = pageNum == null || pageNum < this.minPageNum ? this.minPageNum : pageNum;", + "int cPageSize = pageSize > this.maxPageSize ? this.maxPageSize: pageSize;", + "this.offset = (pageNum - this.minPageNum) * cPageSize;", + "this.rows = cPageSize;", + "return this;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, usePage); + + // 计算获取当前页码 + Method getPageNum = ElementTools.generateMethod( + "getPageNum", + JavaVisibility.PUBLIC, + integerWrapper + ); + getPageNum = ElementTools.generateMethodBody( + getPageNum, + "if (this.rows == null || this.offset == null || this.rows == 0) {", + "return this.minPageNum;", + "}", + "return this.offset / this.rows + this.minPageNum;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, getPageNum); + // 计算获取当前每页数量 + Method getPageSize = ElementTools.generateMethod( + "getPageSize", + JavaVisibility.PUBLIC, + integerWrapper + ); + getPageSize = ElementTools.generateMethodBody( + getPageSize, + "if (this.rows == null) {", + "return 0;", + "}", + "return this.rows;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, getPageSize); + + // !!! clear 方法增加 offset 和 rows的清理 + List methodList = topLevelClass.getMethods(); + for (Method method : methodList) { + if (method.getName().equals("clear")) { + method.addBodyLine("rows = null;"); + method.addBodyLine("offset = null;"); + } + } + return true; + } + + @Override + public boolean sqlMapSelectAllElementGenerated(XmlElement element, IntrospectedTable introspectedTable) { + this.generateLimitElement(element); + return super.sqlMapSelectAllElementGenerated(element, introspectedTable); + } + + @Override + public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) { + this.generateLimitElement(element); + return super.sqlMapSelectByExampleWithoutBLOBsElementGenerated(element, introspectedTable); + } + + @Override + public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) { + this.generateLimitElement(element); + return super.sqlMapSelectByExampleWithBLOBsElementGenerated(element, introspectedTable); + } + + @Override + public void generateLimitElement(XmlElement element) { + XmlElement ifLimitNotNullElement = new XmlElement("if"); + ifLimitNotNullElement.addAttribute(new Attribute("test", "rows != null")); + // rows + XmlElement ifOffsetNotNullElement = new XmlElement("if"); + ifOffsetNotNullElement.addAttribute(new Attribute("test", "offset != null")); + ifOffsetNotNullElement.addElement(new TextElement("limit ${offset}, ${rows}")); + ifLimitNotNullElement.addElement(ifOffsetNotNullElement); + // offset + XmlElement ifOffsetNullElement = new XmlElement("if"); + ifOffsetNullElement.addAttribute(new Attribute("test", "offset == null")); + ifOffsetNullElement.addElement(new TextElement("limit ${rows}")); + ifLimitNotNullElement.addElement(ifOffsetNullElement); + element.addElement(ifLimitNotNullElement); + } + +} diff --git a/src/main/java/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.java b/src/main/java/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.java new file mode 100644 index 0000000..11da92c --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.java @@ -0,0 +1,9 @@ +package com.iqudoo.framework.mybatis.hook; + +import org.mybatis.generator.api.dom.xml.XmlElement; + +public interface ISelectSelectivePluginHook { + + void generateLimitElement(XmlElement element); + +} diff --git a/src/main/java/com/iqudoo/framework/mybatis/utils/ElementTools.java b/src/main/java/com/iqudoo/framework/mybatis/utils/ElementTools.java new file mode 100644 index 0000000..0b4d053 --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/utils/ElementTools.java @@ -0,0 +1,152 @@ +package com.iqudoo.framework.mybatis.utils; + +import org.mybatis.generator.api.IntrospectedTable; +import org.mybatis.generator.api.dom.java.*; + +import static org.mybatis.generator.internal.util.messages.Messages.getString; + +@SuppressWarnings("unused") +public class ElementTools { + + /** + * 生成静态常量 + * + * @param fieldName 常量名称 + * @param javaType 类型 + * @param initString 初始化字段 + * @return Field + */ + public static Field generateStaticFinalField(String fieldName, FullyQualifiedJavaType javaType, String initString) { + Field field = new Field(fieldName, javaType); + field.setVisibility(JavaVisibility.PUBLIC); + field.setStatic(true); + field.setFinal(true); + if (initString != null) { + field.setInitializationString(initString); + } + return field; + } + + /** + * 生成属性 + * + * @param fieldName 常量名称 + * @param visibility 可见性 + * @param javaType 类型 + * @param initString 初始化字段 + * @return Method + */ + public static Field generateField(String fieldName, JavaVisibility visibility, FullyQualifiedJavaType javaType, String initString) { + Field field = new Field(fieldName, javaType); + field.setVisibility(visibility); + if (initString != null) { + field.setInitializationString(initString); + } + return field; + } + + /** + * 生成方法 + * + * @param methodName 方法名 + * @param visibility 可见性 + * @param returnType 返回值类型 + * @param parameters 参数列表 + * @return Method + */ + public static Method generateMethod(String methodName, JavaVisibility visibility, FullyQualifiedJavaType returnType, Parameter... parameters) { + Method method = new Method(methodName); + method.setVisibility(visibility); + method.setReturnType(returnType); + if (parameters != null) { + for (Parameter parameter : parameters) { + method.addParameter(parameter); + } + } + + return method; + } + + /** + * 生成方法实现体 + * + * @param method 方法 + * @param bodyLines 方法实现行 + * @return Method + */ + public static Method generateMethodBody(Method method, String... bodyLines) { + if (bodyLines != null) { + for (String bodyLine : bodyLines) { + method.addBodyLine(bodyLine); + } + } + return method; + } + + /** + * 生成Filed的Set方法 + * + * @param field field + * @return Method + */ + public static Method generateSetterMethod(Field field) { + Method method = generateMethod( + "set" + FormatTools.upFirstChar(field.getName()), + JavaVisibility.PUBLIC, + null, + new Parameter(field.getType(), field.getName()) + ); + return generateMethodBody(method, "this." + field.getName() + " = " + field.getName() + ";"); + } + + /** + * 生成Filed的Get方法 + * + * @param field field + * @return Method + */ + public static Method generateGetterMethod(Field field) { + Method method = generateMethod( + "get" + FormatTools.upFirstChar(field.getName()), + JavaVisibility.PUBLIC, + field.getType() + ); + return generateMethodBody(method, "return this." + field.getName() + ";"); + } + + /** + * 获取Model没有BLOBs类时的类型 + * + * @param introspectedTable introspectedTable + * @return FullyQualifiedJavaType + */ + public static FullyQualifiedJavaType getModelTypeWithoutBLOBs(IntrospectedTable introspectedTable) { + FullyQualifiedJavaType type; + if (introspectedTable.getRules().generateBaseRecordClass()) { + type = new FullyQualifiedJavaType(introspectedTable.getBaseRecordType()); + } else if (introspectedTable.getRules().generatePrimaryKeyClass()) { + type = new FullyQualifiedJavaType(introspectedTable.getPrimaryKeyType()); + } else { + throw new RuntimeException(getString("RuntimeError.12")); + } + return type; + } + + /** + * 获取Model有BLOBs类时的类型 + * + * @param introspectedTable introspectedTable + * @return FullyQualifiedJavaType + */ + public static FullyQualifiedJavaType getModelTypeWithBLOBs(IntrospectedTable introspectedTable) { + FullyQualifiedJavaType type; + if (introspectedTable.getRules().generateRecordWithBLOBsClass()) { + type = new FullyQualifiedJavaType(introspectedTable.getRecordWithBLOBsType()); + } else { + // the blob fields must be rolled up into the base class + type = new FullyQualifiedJavaType(introspectedTable.getBaseRecordType()); + } + return type; + } + +} diff --git a/src/main/java/com/iqudoo/framework/mybatis/utils/FormatTools.java b/src/main/java/com/iqudoo/framework/mybatis/utils/FormatTools.java new file mode 100644 index 0000000..ff4af16 --- /dev/null +++ b/src/main/java/com/iqudoo/framework/mybatis/utils/FormatTools.java @@ -0,0 +1,234 @@ +package com.iqudoo.framework.mybatis.utils; + +import org.mybatis.generator.api.CommentGenerator; +import org.mybatis.generator.api.IntrospectedTable; +import org.mybatis.generator.api.dom.java.*; +import org.mybatis.generator.api.dom.xml.Attribute; +import org.mybatis.generator.api.dom.xml.TextElement; +import org.mybatis.generator.api.dom.xml.VisitableElement; +import org.mybatis.generator.api.dom.xml.XmlElement; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + +@SuppressWarnings("unused") +public class FormatTools { + + /** + * 在最佳位置添加方法 + * + * @param innerClass innerClass + * @param method method + */ + public static void addMethodWithBestPosition(InnerClass innerClass, Method method) { + addMethodWithBestPosition(method, innerClass.getMethods()); + } + + /** + * 在最佳位置添加方法 + * + * @param anInterface anInterface + * @param method method + */ + public static void addMethodWithBestPosition(Interface anInterface, Method method) { + // import + Set importTypes = new TreeSet<>(); + // 返回 + if (method.getReturnType() != null && method.getReturnType().isPresent()) { + importTypes.add(method.getReturnType().get()); + importTypes.addAll(method.getReturnType().get().getTypeArguments()); + } + // 参数 比较特殊的是ModelColumn生成的Column + for (Parameter parameter : method.getParameters()) { + boolean flag = true; + for (String annotation : parameter.getAnnotations()) { + if (annotation.startsWith("@Param")) { + importTypes.add(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Param")); + if (annotation.matches(".*selective.*") && parameter.getType() + .getShortName().equals("Column")) { + flag = false; + } + } + } + if (flag) { + importTypes.add(parameter.getType()); + importTypes.addAll(parameter.getType().getTypeArguments()); + } + } + anInterface.addImportedTypes(importTypes); + addMethodWithBestPosition(method, anInterface.getMethods()); + } + + /** + * 在最佳位置添加方法 + * + * @param innerEnum innerEnum + * @param method method + */ + public static void addMethodWithBestPosition(InnerEnum innerEnum, Method method) { + addMethodWithBestPosition(method, innerEnum.getMethods()); + } + + /** + * 在最佳位置添加方法 + * + * @param topLevelClass topLevelClass + * @param method method + */ + public static void addMethodWithBestPosition(TopLevelClass topLevelClass, Method method) { + addMethodWithBestPosition(method, topLevelClass.getMethods()); + } + + /** + * 在最佳位置添加节点 + * + * @param rootElement rootElement + * @param element element + */ + public static void addElementWithBestPosition(XmlElement rootElement, XmlElement element) { + // sql 元素都放在sql后面 + if (element.getName().equals("sql")) { + int index = 0; + for (VisitableElement ele : rootElement.getElements()) { + if (ele instanceof XmlElement && ((XmlElement) ele).getName().equals("sql")) { + index++; + } + } + rootElement.addElement(index, element); + } else { + + // 根据id 排序 + String id = getIdFromElement(element); + if (id == null) { + rootElement.addElement(element); + } else { + List elements = rootElement.getElements(); + int index = -1; + for (int i = 0; i < elements.size(); i++) { + VisitableElement ele = elements.get(i); + if (ele instanceof XmlElement) { + String eleId = getIdFromElement((XmlElement) ele); + if (eleId != null) { + if (eleId.startsWith(id)) { + if (index == -1) { + index = i; + } + } else if (id.startsWith(eleId)) { + index = i + 1; + } + } + } + } + + if (index == -1 || index >= elements.size()) { + rootElement.addElement(element); + } else { + elements.add(index, element); + } + } + } + } + + /** + * 找出节点ID值 + * + * @param element element + * @return id + */ + private static String getIdFromElement(XmlElement element) { + for (Attribute attribute : element.getAttributes()) { + if (attribute.getName().equals("id")) { + return attribute.getValue(); + } + } + return null; + } + + /** + * 获取最佳添加位置 + * + * @param method method + * @param methods methods + */ + private static void addMethodWithBestPosition(Method method, List methods) { + int index = -1; + for (int i = 0; i < methods.size(); i++) { + Method m = methods.get(i); + if (m.getName().equals(method.getName())) { + if (m.getParameters().size() <= method.getParameters().size()) { + index = i + 1; + } else { + index = i; + } + } else if (m.getName().startsWith(method.getName())) { + if (index == -1) { + index = i; + } + } else if (method.getName().startsWith(m.getName())) { + index = i + 1; + } + } + if (index == -1 || index >= methods.size()) { + methods.add(methods.size(), method); + } else { + methods.add(index, method); + } + } + + /** + * 替换已有方法注释 + * + * @param commentGenerator commentGenerator + * @param method method + * @param introspectedTable introspectedTable + */ + public static void replaceGeneralMethodComment(CommentGenerator commentGenerator, Method method, IntrospectedTable introspectedTable) { + method.getJavaDocLines().clear(); + commentGenerator.addGeneralMethodComment(method, introspectedTable); + } + + /** + * 替换已有注释 + * + * @param commentGenerator commentGenerator + * @param element element + */ + public static void replaceComment(CommentGenerator commentGenerator, XmlElement element) { + Iterator elementIterator = element.getElements().iterator(); + boolean flag = false; + while (elementIterator.hasNext()) { + VisitableElement ele = elementIterator.next(); + if (ele instanceof TextElement && ((TextElement) ele).getContent().matches(".*.*")) { + flag = false; + } + } + + XmlElement tmpEle = new XmlElement("tmp"); + commentGenerator.addComment(tmpEle); + + for (int i = tmpEle.getElements().size() - 1; i >= 0; i--) { + element.addElement(0, tmpEle.getElements().get(i)); + } + } + + /** + * 首字母大写 + * + * @param str str + * @return str + */ + public static String upFirstChar(String str) { + return str.substring(0, 1).toUpperCase() + str.substring(1); + } + +} diff --git a/target/apidocs/allclasses-frame.html b/target/apidocs/allclasses-frame.html new file mode 100644 index 0000000..e939973 --- /dev/null +++ b/target/apidocs/allclasses-frame.html @@ -0,0 +1,26 @@ + + + + + + +所有类 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

所有类

+ + + diff --git a/target/apidocs/allclasses-noframe.html b/target/apidocs/allclasses-noframe.html new file mode 100644 index 0000000..863dbe6 --- /dev/null +++ b/target/apidocs/allclasses-noframe.html @@ -0,0 +1,26 @@ + + + + + + +所有类 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

所有类

+ + + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.html new file mode 100644 index 0000000..77c10ed --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.html @@ -0,0 +1,355 @@ + + + + + + +TapeMybatisGeneratorPlugin (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis
+

类 TapeMybatisGeneratorPlugin

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      嵌套类概要

      +
        +
      • + + +

        从接口继承的嵌套类/接口 org.mybatis.generator.api.Plugin

        +org.mybatis.generator.api.Plugin.ModelClassType
      • +
      +
    • +
    + +
      +
    • + + +

      字段概要

      +
        +
      • + + +

        从类继承的字段 org.mybatis.generator.api.PluginAdapter

        +context, properties
      • +
      +
    • +
    + + + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + +
      所有方法 实例方法 具体方法 
      限定符和类型方法和说明
      booleanclientGenerated(org.mybatis.generator.api.dom.java.Interface interfaze, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleansqlMapDocumentGenerated(org.mybatis.generator.api.dom.xml.Document document, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      + +
        +
      • + + +

        从类继承的方法 org.mybatis.generator.api.PluginAdapter

        +setContext, setProperties
      • +
      + +
        +
      • + + +

        从接口继承的方法 org.mybatis.generator.api.Plugin

        +clientBasicCountMethodGenerated, clientBasicCountMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicUpdateMethodGenerated, clientBasicUpdateMethodGenerated, clientColumnListPropertyGenerated, clientCountByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralUpdateMethodGenerated, clientGeneralUpdateMethodGenerated, clientInsertMethodGenerated, clientInsertMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleVarargMethodGenerated, clientInsertSelectiveMethodGenerated, clientInsertSelectiveMethodGenerated, clientSelectAllMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectListFieldGenerated, clientSelectOneMethodGenerated, clientSelectOneMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeyMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, contextGenerateAdditionalFiles, contextGenerateAdditionalFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalXmlFiles, contextGenerateAdditionalXmlFiles, dynamicSqlSupportGenerated, dynamicSqlSupportGenerated, kotlinDataClassGenerated, mapperExtensionsGenerated, mapperGenerated, modelBaseRecordClassGenerated, modelFieldGenerated, modelGetterMethodGenerated, modelPrimaryKeyClassGenerated, modelRecordWithBLOBsClassGenerated, modelSetterMethodGenerated, providerApplyWhereMethodGenerated, providerCountByExampleMethodGenerated, providerDeleteByExampleMethodGenerated, providerGenerated, providerInsertSelectiveMethodGenerated, providerSelectByExampleWithBLOBsMethodGenerated, providerSelectByExampleWithoutBLOBsMethodGenerated, providerUpdateByExampleSelectiveMethodGenerated, providerUpdateByExampleWithBLOBsMethodGenerated, providerUpdateByExampleWithoutBLOBsMethodGenerated, providerUpdateByPrimaryKeySelectiveMethodGenerated, sqlMapBaseColumnListElementGenerated, sqlMapBlobColumnListElementGenerated, sqlMapCountByExampleElementGenerated, sqlMapDeleteByExampleElementGenerated, sqlMapDeleteByPrimaryKeyElementGenerated, sqlMapExampleWhereClauseElementGenerated, sqlMapGenerated, sqlMapInsertElementGenerated, sqlMapInsertSelectiveElementGenerated, sqlMapResultMapWithBLOBsElementGenerated, sqlMapResultMapWithoutBLOBsElementGenerated, sqlMapSelectByPrimaryKeyElementGenerated, sqlMapUpdateByExampleSelectiveElementGenerated, sqlMapUpdateByExampleWithBLOBsElementGenerated, sqlMapUpdateByExampleWithoutBLOBsElementGenerated, sqlMapUpdateByPrimaryKeySelectiveElementGenerated, sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated, sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        TapeMybatisGeneratorPlugin

        +
        public TapeMybatisGeneratorPlugin()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        clientGenerated

        +
        public boolean clientGenerated(org.mybatis.generator.api.dom.java.Interface interfaze,
        +                               org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
      • +
      + + + +
        +
      • +

        sqlMapDocumentGenerated

        +
        public boolean sqlMapDocumentGenerated(org.mybatis.generator.api.dom.xml.Document document,
        +                                       org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.html new file mode 100644 index 0000000..21b29a6 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.html @@ -0,0 +1,374 @@ + + + + + + +TapeRepositoryGeneratorPlugin (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis
+

类 TapeRepositoryGeneratorPlugin

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.mybatis.generator.api.PluginAdapter
    • +
    • +
        +
      • com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    所有已实现的接口:
    +
    org.mybatis.generator.api.Plugin
    +
    +
    +
    +
    public class TapeRepositoryGeneratorPlugin
    +extends org.mybatis.generator.api.PluginAdapter
    +
    MyBatis Generator 1.4.1
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      嵌套类概要

      +
        +
      • + + +

        从接口继承的嵌套类/接口 org.mybatis.generator.api.Plugin

        +org.mybatis.generator.api.Plugin.ModelClassType
      • +
      +
    • +
    + +
      +
    • + + +

      字段概要

      +
        +
      • + + +

        从类继承的字段 org.mybatis.generator.api.PluginAdapter

        +context, properties
      • +
      +
    • +
    + + + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + + + + + + + + + +
      所有方法 实例方法 具体方法 
      限定符和类型方法和说明
      List<org.mybatis.generator.api.GeneratedJavaFile>contextGenerateAdditionalJavaFiles(org.mybatis.generator.api.IntrospectedTable introspectedTable) +
      核心方法:视图表过滤 + 生成完整Repository代码
      +
      voidsetContext(org.mybatis.generator.config.Context context) 
      voidsetProperties(Properties properties) 
      booleanvalidate(List<String> warnings) 
      + +
        +
      • + + +

        从接口继承的方法 org.mybatis.generator.api.Plugin

        +clientBasicCountMethodGenerated, clientBasicCountMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicUpdateMethodGenerated, clientBasicUpdateMethodGenerated, clientColumnListPropertyGenerated, clientCountByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralUpdateMethodGenerated, clientGeneralUpdateMethodGenerated, clientGenerated, clientInsertMethodGenerated, clientInsertMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleVarargMethodGenerated, clientInsertSelectiveMethodGenerated, clientInsertSelectiveMethodGenerated, clientSelectAllMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectListFieldGenerated, clientSelectOneMethodGenerated, clientSelectOneMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeyMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, contextGenerateAdditionalFiles, contextGenerateAdditionalFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalXmlFiles, contextGenerateAdditionalXmlFiles, dynamicSqlSupportGenerated, dynamicSqlSupportGenerated, initialized, kotlinDataClassGenerated, mapperExtensionsGenerated, mapperGenerated, modelBaseRecordClassGenerated, modelExampleClassGenerated, modelFieldGenerated, modelGetterMethodGenerated, modelPrimaryKeyClassGenerated, modelRecordWithBLOBsClassGenerated, modelSetterMethodGenerated, providerApplyWhereMethodGenerated, providerCountByExampleMethodGenerated, providerDeleteByExampleMethodGenerated, providerGenerated, providerInsertSelectiveMethodGenerated, providerSelectByExampleWithBLOBsMethodGenerated, providerSelectByExampleWithoutBLOBsMethodGenerated, providerUpdateByExampleSelectiveMethodGenerated, providerUpdateByExampleWithBLOBsMethodGenerated, providerUpdateByExampleWithoutBLOBsMethodGenerated, providerUpdateByPrimaryKeySelectiveMethodGenerated, sqlMapBaseColumnListElementGenerated, sqlMapBlobColumnListElementGenerated, sqlMapCountByExampleElementGenerated, sqlMapDeleteByExampleElementGenerated, sqlMapDeleteByPrimaryKeyElementGenerated, sqlMapDocumentGenerated, sqlMapExampleWhereClauseElementGenerated, sqlMapGenerated, sqlMapInsertElementGenerated, sqlMapInsertSelectiveElementGenerated, sqlMapResultMapWithBLOBsElementGenerated, sqlMapResultMapWithoutBLOBsElementGenerated, sqlMapSelectAllElementGenerated, sqlMapSelectByExampleWithBLOBsElementGenerated, sqlMapSelectByExampleWithoutBLOBsElementGenerated, sqlMapSelectByPrimaryKeyElementGenerated, sqlMapUpdateByExampleSelectiveElementGenerated, sqlMapUpdateByExampleWithBLOBsElementGenerated, sqlMapUpdateByExampleWithoutBLOBsElementGenerated, sqlMapUpdateByPrimaryKeySelectiveElementGenerated, sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated, sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        TapeRepositoryGeneratorPlugin

        +
        public TapeRepositoryGeneratorPlugin()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        setContext

        +
        public void setContext(org.mybatis.generator.config.Context context)
        +
        +
        指定者:
        +
        setContext 在接口中 org.mybatis.generator.api.Plugin
        +
        覆盖:
        +
        setContext 在类中 org.mybatis.generator.api.PluginAdapter
        +
        +
      • +
      + + + +
        +
      • +

        validate

        +
        public boolean validate(List<String> warnings)
        +
      • +
      + + + +
        +
      • +

        setProperties

        +
        public void setProperties(Properties properties)
        +
        +
        指定者:
        +
        setProperties 在接口中 org.mybatis.generator.api.Plugin
        +
        覆盖:
        +
        setProperties 在类中 org.mybatis.generator.api.PluginAdapter
        +
        +
      • +
      + + + +
        +
      • +

        contextGenerateAdditionalJavaFiles

        +
        public List<org.mybatis.generator.api.GeneratedJavaFile> contextGenerateAdditionalJavaFiles(org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        核心方法:视图表过滤 + 生成完整Repository代码
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.html new file mode 100644 index 0000000..3b3784e --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.html @@ -0,0 +1,374 @@ + + + + + + +TapeRepoviewGeneratorPlugin (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis
+

类 TapeRepoviewGeneratorPlugin

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.mybatis.generator.api.PluginAdapter
    • +
    • +
        +
      • com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    所有已实现的接口:
    +
    org.mybatis.generator.api.Plugin
    +
    +
    +
    +
    public class TapeRepoviewGeneratorPlugin
    +extends org.mybatis.generator.api.PluginAdapter
    +
    MyBatis Generator 1.4.1 适配版:视图表专用 RepoView 生成插件
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      嵌套类概要

      +
        +
      • + + +

        从接口继承的嵌套类/接口 org.mybatis.generator.api.Plugin

        +org.mybatis.generator.api.Plugin.ModelClassType
      • +
      +
    • +
    + +
      +
    • + + +

      字段概要

      +
        +
      • + + +

        从类继承的字段 org.mybatis.generator.api.PluginAdapter

        +context, properties
      • +
      +
    • +
    + + + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + + + + + + + + + +
      所有方法 实例方法 具体方法 
      限定符和类型方法和说明
      List<org.mybatis.generator.api.GeneratedJavaFile>contextGenerateAdditionalJavaFiles(org.mybatis.generator.api.IntrospectedTable introspectedTable) +
      核心方法:仅为视图表生成 RepoView 代码
      +
      voidsetContext(org.mybatis.generator.config.Context context) 
      voidsetProperties(Properties properties) 
      booleanvalidate(List<String> warnings) 
      + +
        +
      • + + +

        从接口继承的方法 org.mybatis.generator.api.Plugin

        +clientBasicCountMethodGenerated, clientBasicCountMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicUpdateMethodGenerated, clientBasicUpdateMethodGenerated, clientColumnListPropertyGenerated, clientCountByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralUpdateMethodGenerated, clientGeneralUpdateMethodGenerated, clientGenerated, clientInsertMethodGenerated, clientInsertMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleVarargMethodGenerated, clientInsertSelectiveMethodGenerated, clientInsertSelectiveMethodGenerated, clientSelectAllMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectListFieldGenerated, clientSelectOneMethodGenerated, clientSelectOneMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeyMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, contextGenerateAdditionalFiles, contextGenerateAdditionalFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalXmlFiles, contextGenerateAdditionalXmlFiles, dynamicSqlSupportGenerated, dynamicSqlSupportGenerated, initialized, kotlinDataClassGenerated, mapperExtensionsGenerated, mapperGenerated, modelBaseRecordClassGenerated, modelExampleClassGenerated, modelFieldGenerated, modelGetterMethodGenerated, modelPrimaryKeyClassGenerated, modelRecordWithBLOBsClassGenerated, modelSetterMethodGenerated, providerApplyWhereMethodGenerated, providerCountByExampleMethodGenerated, providerDeleteByExampleMethodGenerated, providerGenerated, providerInsertSelectiveMethodGenerated, providerSelectByExampleWithBLOBsMethodGenerated, providerSelectByExampleWithoutBLOBsMethodGenerated, providerUpdateByExampleSelectiveMethodGenerated, providerUpdateByExampleWithBLOBsMethodGenerated, providerUpdateByExampleWithoutBLOBsMethodGenerated, providerUpdateByPrimaryKeySelectiveMethodGenerated, sqlMapBaseColumnListElementGenerated, sqlMapBlobColumnListElementGenerated, sqlMapCountByExampleElementGenerated, sqlMapDeleteByExampleElementGenerated, sqlMapDeleteByPrimaryKeyElementGenerated, sqlMapDocumentGenerated, sqlMapExampleWhereClauseElementGenerated, sqlMapGenerated, sqlMapInsertElementGenerated, sqlMapInsertSelectiveElementGenerated, sqlMapResultMapWithBLOBsElementGenerated, sqlMapResultMapWithoutBLOBsElementGenerated, sqlMapSelectAllElementGenerated, sqlMapSelectByExampleWithBLOBsElementGenerated, sqlMapSelectByExampleWithoutBLOBsElementGenerated, sqlMapSelectByPrimaryKeyElementGenerated, sqlMapUpdateByExampleSelectiveElementGenerated, sqlMapUpdateByExampleWithBLOBsElementGenerated, sqlMapUpdateByExampleWithoutBLOBsElementGenerated, sqlMapUpdateByPrimaryKeySelectiveElementGenerated, sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated, sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        TapeRepoviewGeneratorPlugin

        +
        public TapeRepoviewGeneratorPlugin()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        setContext

        +
        public void setContext(org.mybatis.generator.config.Context context)
        +
        +
        指定者:
        +
        setContext 在接口中 org.mybatis.generator.api.Plugin
        +
        覆盖:
        +
        setContext 在类中 org.mybatis.generator.api.PluginAdapter
        +
        +
      • +
      + + + +
        +
      • +

        validate

        +
        public boolean validate(List<String> warnings)
        +
      • +
      + + + +
        +
      • +

        setProperties

        +
        public void setProperties(Properties properties)
        +
        +
        指定者:
        +
        setProperties 在接口中 org.mybatis.generator.api.Plugin
        +
        覆盖:
        +
        setProperties 在类中 org.mybatis.generator.api.PluginAdapter
        +
        +
      • +
      + + + +
        +
      • +

        contextGenerateAdditionalJavaFiles

        +
        public List<org.mybatis.generator.api.GeneratedJavaFile> contextGenerateAdditionalJavaFiles(org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        核心方法:仅为视图表生成 RepoView 代码
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.html new file mode 100644 index 0000000..f39ce4d --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.html @@ -0,0 +1,445 @@ + + + + + + +AbstractWithLimitPlugin (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis.abstracts
+

类 AbstractWithLimitPlugin

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.mybatis.generator.api.PluginAdapter
    • +
    • +
        +
      • com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
      • +
      +
    • +
    +
  • +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      嵌套类概要

      +
        +
      • + + +

        从接口继承的嵌套类/接口 org.mybatis.generator.api.Plugin

        +org.mybatis.generator.api.Plugin.ModelClassType
      • +
      +
    • +
    + +
      +
    • + + +

      字段概要

      +
        +
      • + + +

        从类继承的字段 org.mybatis.generator.api.PluginAdapter

        +context, properties
      • +
      +
    • +
    + + + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      所有方法 实例方法 具体方法 
      限定符和类型方法和说明
      voidgenerateLimitElement(org.mybatis.generator.api.dom.xml.XmlElement element) 
      voidinitialized(org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleanmodelExampleClassGenerated(org.mybatis.generator.api.dom.java.TopLevelClass topLevelClass, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleansqlMapSelectAllElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleansqlMapSelectByExampleWithBLOBsElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleansqlMapSelectByExampleWithoutBLOBsElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element, + org.mybatis.generator.api.IntrospectedTable introspectedTable) 
      booleanvalidate(List<String> list) 
      +
        +
      • + + +

        从类继承的方法 org.mybatis.generator.api.PluginAdapter

        +setContext, setProperties
      • +
      + +
        +
      • + + +

        从接口继承的方法 org.mybatis.generator.api.Plugin

        +clientBasicCountMethodGenerated, clientBasicCountMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicDeleteMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleHelperMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicInsertMultipleMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectManyMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicSelectOneMethodGenerated, clientBasicUpdateMethodGenerated, clientBasicUpdateMethodGenerated, clientColumnListPropertyGenerated, clientCountByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralCountMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralDeleteMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectDistinctMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralSelectMethodGenerated, clientGeneralUpdateMethodGenerated, clientGeneralUpdateMethodGenerated, clientGenerated, clientInsertMethodGenerated, clientInsertMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleMethodGenerated, clientInsertMultipleVarargMethodGenerated, clientInsertSelectiveMethodGenerated, clientInsertSelectiveMethodGenerated, clientSelectAllMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectListFieldGenerated, clientSelectOneMethodGenerated, clientSelectOneMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateAllColumnsMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeyMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, clientUpdateSelectiveColumnsMethodGenerated, contextGenerateAdditionalFiles, contextGenerateAdditionalFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalKotlinFiles, contextGenerateAdditionalXmlFiles, contextGenerateAdditionalXmlFiles, dynamicSqlSupportGenerated, dynamicSqlSupportGenerated, kotlinDataClassGenerated, mapperExtensionsGenerated, mapperGenerated, modelBaseRecordClassGenerated, modelFieldGenerated, modelGetterMethodGenerated, modelPrimaryKeyClassGenerated, modelRecordWithBLOBsClassGenerated, modelSetterMethodGenerated, providerApplyWhereMethodGenerated, providerCountByExampleMethodGenerated, providerDeleteByExampleMethodGenerated, providerGenerated, providerInsertSelectiveMethodGenerated, providerSelectByExampleWithBLOBsMethodGenerated, providerSelectByExampleWithoutBLOBsMethodGenerated, providerUpdateByExampleSelectiveMethodGenerated, providerUpdateByExampleWithBLOBsMethodGenerated, providerUpdateByExampleWithoutBLOBsMethodGenerated, providerUpdateByPrimaryKeySelectiveMethodGenerated, sqlMapBaseColumnListElementGenerated, sqlMapBlobColumnListElementGenerated, sqlMapCountByExampleElementGenerated, sqlMapDeleteByExampleElementGenerated, sqlMapDeleteByPrimaryKeyElementGenerated, sqlMapDocumentGenerated, sqlMapExampleWhereClauseElementGenerated, sqlMapGenerated, sqlMapInsertElementGenerated, sqlMapInsertSelectiveElementGenerated, sqlMapResultMapWithBLOBsElementGenerated, sqlMapResultMapWithoutBLOBsElementGenerated, sqlMapSelectByPrimaryKeyElementGenerated, sqlMapUpdateByExampleSelectiveElementGenerated, sqlMapUpdateByExampleWithBLOBsElementGenerated, sqlMapUpdateByExampleWithoutBLOBsElementGenerated, sqlMapUpdateByPrimaryKeySelectiveElementGenerated, sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated, sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        AbstractWithLimitPlugin

        +
        public AbstractWithLimitPlugin()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        validate

        +
        public boolean validate(List<String> list)
        +
        +
        指定者:
        +
        validate 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + +
        +
      • +

        initialized

        +
        public void initialized(org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        +
        指定者:
        +
        initialized 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + +
        +
      • +

        modelExampleClassGenerated

        +
        public boolean modelExampleClassGenerated(org.mybatis.generator.api.dom.java.TopLevelClass topLevelClass,
        +                                          org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        +
        指定者:
        +
        modelExampleClassGenerated 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + +
        +
      • +

        sqlMapSelectAllElementGenerated

        +
        public boolean sqlMapSelectAllElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element,
        +                                               org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        +
        指定者:
        +
        sqlMapSelectAllElementGenerated 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + +
        +
      • +

        sqlMapSelectByExampleWithoutBLOBsElementGenerated

        +
        public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element,
        +                                                                 org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        +
        指定者:
        +
        sqlMapSelectByExampleWithoutBLOBsElementGenerated 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + +
        +
      • +

        sqlMapSelectByExampleWithBLOBsElementGenerated

        +
        public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(org.mybatis.generator.api.dom.xml.XmlElement element,
        +                                                              org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        +
        指定者:
        +
        sqlMapSelectByExampleWithBLOBsElementGenerated 在接口中 org.mybatis.generator.api.Plugin
        +
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/class-use/AbstractWithLimitPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/class-use/AbstractWithLimitPlugin.html new file mode 100644 index 0000000..9419614 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/class-use/AbstractWithLimitPlugin.html @@ -0,0 +1,166 @@ + + + + + + +类 com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-frame.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-frame.html new file mode 100644 index 0000000..5f17718 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +com.iqudoo.framework.mybatis.abstracts (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

com.iqudoo.framework.mybatis.abstracts

+ + + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-summary.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-summary.html new file mode 100644 index 0000000..af2b9d7 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-summary.html @@ -0,0 +1,144 @@ + + + + + + +com.iqudoo.framework.mybatis.abstracts (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包 com.iqudoo.framework.mybatis.abstracts

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-tree.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-tree.html new file mode 100644 index 0000000..72b0559 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-tree.html @@ -0,0 +1,143 @@ + + + + + + +com.iqudoo.framework.mybatis.abstracts 类分层结构 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包com.iqudoo.framework.mybatis.abstracts的分层结构

+程序包分层结构: + +
+
+

类分层结构

+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-use.html b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-use.html new file mode 100644 index 0000000..ee2afd0 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/abstracts/package-use.html @@ -0,0 +1,159 @@ + + + + + + +程序包 com.iqudoo.framework.mybatis.abstracts的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包的使用
com.iqudoo.framework.mybatis.abstracts

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeMybatisGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeMybatisGeneratorPlugin.html new file mode 100644 index 0000000..3c6b20c --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeMybatisGeneratorPlugin.html @@ -0,0 +1,126 @@ + + + + + + +类 com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin

+
+
没有com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepositoryGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepositoryGeneratorPlugin.html new file mode 100644 index 0000000..ae62b7e --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepositoryGeneratorPlugin.html @@ -0,0 +1,126 @@ + + + + + + +类 com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin

+
+
没有com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepoviewGeneratorPlugin.html b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepoviewGeneratorPlugin.html new file mode 100644 index 0000000..954a92f --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/class-use/TapeRepoviewGeneratorPlugin.html @@ -0,0 +1,126 @@ + + + + + + +类 com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin

+
+
没有com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.html new file mode 100644 index 0000000..54602ab --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.html @@ -0,0 +1,227 @@ + + + + + + +ISelectSelectivePluginHook (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis.hook
+

接口 ISelectSelectivePluginHook

+
+
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        generateLimitElement

        +
        void generateLimitElement(org.mybatis.generator.api.dom.xml.XmlElement element)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/class-use/ISelectSelectivePluginHook.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/class-use/ISelectSelectivePluginHook.html new file mode 100644 index 0000000..12d4882 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/class-use/ISelectSelectivePluginHook.html @@ -0,0 +1,188 @@ + + + + + + +接口 com.iqudoo.framework.mybatis.hook.ISelectSelectivePluginHook的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

接口的使用
com.iqudoo.framework.mybatis.hook.ISelectSelectivePluginHook

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/package-frame.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-frame.html new file mode 100644 index 0000000..ed74118 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +com.iqudoo.framework.mybatis.hook (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

com.iqudoo.framework.mybatis.hook

+ + + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/package-summary.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-summary.html new file mode 100644 index 0000000..12200e5 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-summary.html @@ -0,0 +1,144 @@ + + + + + + +com.iqudoo.framework.mybatis.hook (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包 com.iqudoo.framework.mybatis.hook

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/package-tree.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-tree.html new file mode 100644 index 0000000..a8faf98 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-tree.html @@ -0,0 +1,135 @@ + + + + + + +com.iqudoo.framework.mybatis.hook 类分层结构 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包com.iqudoo.framework.mybatis.hook的分层结构

+程序包分层结构: + +
+
+

接口分层结构

+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/hook/package-use.html b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-use.html new file mode 100644 index 0000000..edb8378 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/hook/package-use.html @@ -0,0 +1,178 @@ + + + + + + +程序包 com.iqudoo.framework.mybatis.hook的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包的使用
com.iqudoo.framework.mybatis.hook

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/package-frame.html b/target/apidocs/com/iqudoo/framework/mybatis/package-frame.html new file mode 100644 index 0000000..af84265 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/package-frame.html @@ -0,0 +1,23 @@ + + + + + + +com.iqudoo.framework.mybatis (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

com.iqudoo.framework.mybatis

+ + + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/package-summary.html b/target/apidocs/com/iqudoo/framework/mybatis/package-summary.html new file mode 100644 index 0000000..041ffbc --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/package-summary.html @@ -0,0 +1,156 @@ + + + + + + +com.iqudoo.framework.mybatis (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包 com.iqudoo.framework.mybatis

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/package-tree.html b/target/apidocs/com/iqudoo/framework/mybatis/package-tree.html new file mode 100644 index 0000000..a71701b --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/package-tree.html @@ -0,0 +1,149 @@ + + + + + + +com.iqudoo.framework.mybatis 类分层结构 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包com.iqudoo.framework.mybatis的分层结构

+程序包分层结构: + +
+
+

类分层结构

+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/package-use.html b/target/apidocs/com/iqudoo/framework/mybatis/package-use.html new file mode 100644 index 0000000..80da010 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/package-use.html @@ -0,0 +1,126 @@ + + + + + + +程序包 com.iqudoo.framework.mybatis的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包的使用
com.iqudoo.framework.mybatis

+
+
没有com.iqudoo.framework.mybatis的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/ElementTools.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/ElementTools.html new file mode 100644 index 0000000..f6a8707 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/ElementTools.html @@ -0,0 +1,463 @@ + + + + + + +ElementTools (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis.utils
+

类 ElementTools

+
+
+ +
+
    +
  • +
    +
    +
    public class ElementTools
    +extends Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器概要

      + + + + + + + + +
      构造器 
      构造器和说明
      ElementTools() 
      +
    • +
    + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      所有方法 静态方法 具体方法 
      限定符和类型方法和说明
      static org.mybatis.generator.api.dom.java.FieldgenerateField(String fieldName, + org.mybatis.generator.api.dom.java.JavaVisibility visibility, + org.mybatis.generator.api.dom.java.FullyQualifiedJavaType javaType, + String initString) +
      生成属性
      +
      static org.mybatis.generator.api.dom.java.MethodgenerateGetterMethod(org.mybatis.generator.api.dom.java.Field field) +
      生成Filed的Get方法
      +
      static org.mybatis.generator.api.dom.java.MethodgenerateMethod(String methodName, + org.mybatis.generator.api.dom.java.JavaVisibility visibility, + org.mybatis.generator.api.dom.java.FullyQualifiedJavaType returnType, + org.mybatis.generator.api.dom.java.Parameter... parameters) +
      生成方法
      +
      static org.mybatis.generator.api.dom.java.MethodgenerateMethodBody(org.mybatis.generator.api.dom.java.Method method, + String... bodyLines) +
      生成方法实现体
      +
      static org.mybatis.generator.api.dom.java.MethodgenerateSetterMethod(org.mybatis.generator.api.dom.java.Field field) +
      生成Filed的Set方法
      +
      static org.mybatis.generator.api.dom.java.FieldgenerateStaticFinalField(String fieldName, + org.mybatis.generator.api.dom.java.FullyQualifiedJavaType javaType, + String initString) +
      生成静态常量
      +
      static org.mybatis.generator.api.dom.java.FullyQualifiedJavaTypegetModelTypeWithBLOBs(org.mybatis.generator.api.IntrospectedTable introspectedTable) +
      获取Model有BLOBs类时的类型
      +
      static org.mybatis.generator.api.dom.java.FullyQualifiedJavaTypegetModelTypeWithoutBLOBs(org.mybatis.generator.api.IntrospectedTable introspectedTable) +
      获取Model没有BLOBs类时的类型
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        ElementTools

        +
        public ElementTools()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        generateStaticFinalField

        +
        public static org.mybatis.generator.api.dom.java.Field generateStaticFinalField(String fieldName,
        +                                                                                org.mybatis.generator.api.dom.java.FullyQualifiedJavaType javaType,
        +                                                                                String initString)
        +
        生成静态常量
        +
        +
        参数:
        +
        fieldName - 常量名称
        +
        javaType - 类型
        +
        initString - 初始化字段
        +
        返回:
        +
        Field
        +
        +
      • +
      + + + +
        +
      • +

        generateField

        +
        public static org.mybatis.generator.api.dom.java.Field generateField(String fieldName,
        +                                                                     org.mybatis.generator.api.dom.java.JavaVisibility visibility,
        +                                                                     org.mybatis.generator.api.dom.java.FullyQualifiedJavaType javaType,
        +                                                                     String initString)
        +
        生成属性
        +
        +
        参数:
        +
        fieldName - 常量名称
        +
        visibility - 可见性
        +
        javaType - 类型
        +
        initString - 初始化字段
        +
        返回:
        +
        Method
        +
        +
      • +
      + + + +
        +
      • +

        generateMethod

        +
        public static org.mybatis.generator.api.dom.java.Method generateMethod(String methodName,
        +                                                                       org.mybatis.generator.api.dom.java.JavaVisibility visibility,
        +                                                                       org.mybatis.generator.api.dom.java.FullyQualifiedJavaType returnType,
        +                                                                       org.mybatis.generator.api.dom.java.Parameter... parameters)
        +
        生成方法
        +
        +
        参数:
        +
        methodName - 方法名
        +
        visibility - 可见性
        +
        returnType - 返回值类型
        +
        parameters - 参数列表
        +
        返回:
        +
        Method
        +
        +
      • +
      + + + +
        +
      • +

        generateMethodBody

        +
        public static org.mybatis.generator.api.dom.java.Method generateMethodBody(org.mybatis.generator.api.dom.java.Method method,
        +                                                                           String... bodyLines)
        +
        生成方法实现体
        +
        +
        参数:
        +
        method - 方法
        +
        bodyLines - 方法实现行
        +
        返回:
        +
        Method
        +
        +
      • +
      + + + +
        +
      • +

        generateSetterMethod

        +
        public static org.mybatis.generator.api.dom.java.Method generateSetterMethod(org.mybatis.generator.api.dom.java.Field field)
        +
        生成Filed的Set方法
        +
        +
        参数:
        +
        field - field
        +
        返回:
        +
        Method
        +
        +
      • +
      + + + +
        +
      • +

        generateGetterMethod

        +
        public static org.mybatis.generator.api.dom.java.Method generateGetterMethod(org.mybatis.generator.api.dom.java.Field field)
        +
        生成Filed的Get方法
        +
        +
        参数:
        +
        field - field
        +
        返回:
        +
        Method
        +
        +
      • +
      + + + +
        +
      • +

        getModelTypeWithoutBLOBs

        +
        public static org.mybatis.generator.api.dom.java.FullyQualifiedJavaType getModelTypeWithoutBLOBs(org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        获取Model没有BLOBs类时的类型
        +
        +
        参数:
        +
        introspectedTable - introspectedTable
        +
        返回:
        +
        FullyQualifiedJavaType
        +
        +
      • +
      + + + +
        +
      • +

        getModelTypeWithBLOBs

        +
        public static org.mybatis.generator.api.dom.java.FullyQualifiedJavaType getModelTypeWithBLOBs(org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        获取Model有BLOBs类时的类型
        +
        +
        参数:
        +
        introspectedTable - introspectedTable
        +
        返回:
        +
        FullyQualifiedJavaType
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/FormatTools.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/FormatTools.html new file mode 100644 index 0000000..4b3ea1e --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/FormatTools.html @@ -0,0 +1,446 @@ + + + + + + +FormatTools (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + + +
+
com.iqudoo.framework.mybatis.utils
+

类 FormatTools

+
+
+ +
+
    +
  • +
    +
    +
    public class FormatTools
    +extends Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器概要

      + + + + + + + + +
      构造器 
      构造器和说明
      FormatTools() 
      +
    • +
    + +
      +
    • + + +

      方法概要

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      所有方法 静态方法 具体方法 
      限定符和类型方法和说明
      static voidaddElementWithBestPosition(org.mybatis.generator.api.dom.xml.XmlElement rootElement, + org.mybatis.generator.api.dom.xml.XmlElement element) +
      在最佳位置添加节点
      +
      static voidaddMethodWithBestPosition(org.mybatis.generator.api.dom.java.InnerClass innerClass, + org.mybatis.generator.api.dom.java.Method method) +
      在最佳位置添加方法
      +
      static voidaddMethodWithBestPosition(org.mybatis.generator.api.dom.java.InnerEnum innerEnum, + org.mybatis.generator.api.dom.java.Method method) +
      在最佳位置添加方法
      +
      static voidaddMethodWithBestPosition(org.mybatis.generator.api.dom.java.Interface anInterface, + org.mybatis.generator.api.dom.java.Method method) +
      在最佳位置添加方法
      +
      static voidaddMethodWithBestPosition(org.mybatis.generator.api.dom.java.TopLevelClass topLevelClass, + org.mybatis.generator.api.dom.java.Method method) +
      在最佳位置添加方法
      +
      static voidreplaceComment(org.mybatis.generator.api.CommentGenerator commentGenerator, + org.mybatis.generator.api.dom.xml.XmlElement element) +
      替换已有注释
      +
      static voidreplaceGeneralMethodComment(org.mybatis.generator.api.CommentGenerator commentGenerator, + org.mybatis.generator.api.dom.java.Method method, + org.mybatis.generator.api.IntrospectedTable introspectedTable) +
      替换已有方法注释
      +
      static StringupFirstChar(String str) +
      首字母大写
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      构造器详细资料

      + + + +
        +
      • +

        FormatTools

        +
        public FormatTools()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      方法详细资料

      + + + +
        +
      • +

        addMethodWithBestPosition

        +
        public static void addMethodWithBestPosition(org.mybatis.generator.api.dom.java.InnerClass innerClass,
        +                                             org.mybatis.generator.api.dom.java.Method method)
        +
        在最佳位置添加方法
        +
        +
        参数:
        +
        innerClass - innerClass
        +
        method - method
        +
        +
      • +
      + + + +
        +
      • +

        addMethodWithBestPosition

        +
        public static void addMethodWithBestPosition(org.mybatis.generator.api.dom.java.Interface anInterface,
        +                                             org.mybatis.generator.api.dom.java.Method method)
        +
        在最佳位置添加方法
        +
        +
        参数:
        +
        anInterface - anInterface
        +
        method - method
        +
        +
      • +
      + + + +
        +
      • +

        addMethodWithBestPosition

        +
        public static void addMethodWithBestPosition(org.mybatis.generator.api.dom.java.InnerEnum innerEnum,
        +                                             org.mybatis.generator.api.dom.java.Method method)
        +
        在最佳位置添加方法
        +
        +
        参数:
        +
        innerEnum - innerEnum
        +
        method - method
        +
        +
      • +
      + + + +
        +
      • +

        addMethodWithBestPosition

        +
        public static void addMethodWithBestPosition(org.mybatis.generator.api.dom.java.TopLevelClass topLevelClass,
        +                                             org.mybatis.generator.api.dom.java.Method method)
        +
        在最佳位置添加方法
        +
        +
        参数:
        +
        topLevelClass - topLevelClass
        +
        method - method
        +
        +
      • +
      + + + +
        +
      • +

        addElementWithBestPosition

        +
        public static void addElementWithBestPosition(org.mybatis.generator.api.dom.xml.XmlElement rootElement,
        +                                              org.mybatis.generator.api.dom.xml.XmlElement element)
        +
        在最佳位置添加节点
        +
        +
        参数:
        +
        rootElement - rootElement
        +
        element - element
        +
        +
      • +
      + + + +
        +
      • +

        replaceGeneralMethodComment

        +
        public static void replaceGeneralMethodComment(org.mybatis.generator.api.CommentGenerator commentGenerator,
        +                                               org.mybatis.generator.api.dom.java.Method method,
        +                                               org.mybatis.generator.api.IntrospectedTable introspectedTable)
        +
        替换已有方法注释
        +
        +
        参数:
        +
        commentGenerator - commentGenerator
        +
        method - method
        +
        introspectedTable - introspectedTable
        +
        +
      • +
      + + + +
        +
      • +

        replaceComment

        +
        public static void replaceComment(org.mybatis.generator.api.CommentGenerator commentGenerator,
        +                                  org.mybatis.generator.api.dom.xml.XmlElement element)
        +
        替换已有注释
        +
        +
        参数:
        +
        commentGenerator - commentGenerator
        +
        element - element
        +
        +
      • +
      + + + +
        +
      • +

        upFirstChar

        +
        public static String upFirstChar(String str)
        +
        首字母大写
        +
        +
        参数:
        +
        str - str
        +
        返回:
        +
        str
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/ElementTools.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/ElementTools.html new file mode 100644 index 0000000..1c6cf55 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/ElementTools.html @@ -0,0 +1,126 @@ + + + + + + +类 com.iqudoo.framework.mybatis.utils.ElementTools的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.utils.ElementTools

+
+
没有com.iqudoo.framework.mybatis.utils.ElementTools的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/FormatTools.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/FormatTools.html new file mode 100644 index 0000000..58427e4 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/class-use/FormatTools.html @@ -0,0 +1,126 @@ + + + + + + +类 com.iqudoo.framework.mybatis.utils.FormatTools的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

类的使用
com.iqudoo.framework.mybatis.utils.FormatTools

+
+
没有com.iqudoo.framework.mybatis.utils.FormatTools的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/package-frame.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-frame.html new file mode 100644 index 0000000..2de7696 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-frame.html @@ -0,0 +1,22 @@ + + + + + + +com.iqudoo.framework.mybatis.utils (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + +

com.iqudoo.framework.mybatis.utils

+ + + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/package-summary.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-summary.html new file mode 100644 index 0000000..ef1219e --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-summary.html @@ -0,0 +1,148 @@ + + + + + + +com.iqudoo.framework.mybatis.utils (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包 com.iqudoo.framework.mybatis.utils

+
+
+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/package-tree.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-tree.html new file mode 100644 index 0000000..e1bd188 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-tree.html @@ -0,0 +1,140 @@ + + + + + + +com.iqudoo.framework.mybatis.utils 类分层结构 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包com.iqudoo.framework.mybatis.utils的分层结构

+程序包分层结构: + +
+
+

类分层结构

+ +
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/com/iqudoo/framework/mybatis/utils/package-use.html b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-use.html new file mode 100644 index 0000000..2a2ef95 --- /dev/null +++ b/target/apidocs/com/iqudoo/framework/mybatis/utils/package-use.html @@ -0,0 +1,126 @@ + + + + + + +程序包 com.iqudoo.framework.mybatis.utils的使用 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + + + + +
+

程序包的使用
com.iqudoo.framework.mybatis.utils

+
+
没有com.iqudoo.framework.mybatis.utils的用法
+ + + + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/constant-values.html b/target/apidocs/constant-values.html new file mode 100644 index 0000000..3fdc965 --- /dev/null +++ b/target/apidocs/constant-values.html @@ -0,0 +1,126 @@ + + + + + + +常量字段值 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

常量字段值

+

目录

+
+ +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/deprecated-list.html b/target/apidocs/deprecated-list.html new file mode 100644 index 0000000..2c89d2f --- /dev/null +++ b/target/apidocs/deprecated-list.html @@ -0,0 +1,126 @@ + + + + + + +已过时的列表 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

已过时的 API

+

目录

+
+ +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/help-doc.html b/target/apidocs/help-doc.html new file mode 100644 index 0000000..fc92e47 --- /dev/null +++ b/target/apidocs/help-doc.html @@ -0,0 +1,231 @@ + + + + + + +API 帮助 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

此 API 文档的组织方式

+
此 API (应用程序编程接口) 文档包含对应于导航栏中的项目的页面, 如下所述。
+
+
+
    +
  • +

    概览

    +

    概览 页面是此 API 文档的首页, 提供了所有程序包的列表及其概要。此页面也可能包含这些程序包的总体说明。

    +
  • +
  • +

    程序包

    +

    每个程序包都有一个页面, 其中包含它的类和接口的列表及其概要。此页面可以包含六个类别:

    +
      +
    • 接口 (斜体)
    • +
    • +
    • 枚举
    • +
    • 异常错误
    • +
    • 错误
    • +
    • 注释类型
    • +
    +
  • +
  • +

    类/接口

    +

    每个类, 接口, 嵌套类和嵌套接口都有各自的页面。其中每个页面都由三部分 (类/接口说明, 概要表, 以及详细的成员说明) 组成:

    +
      +
    • 类继承图
    • +
    • 直接子类
    • +
    • 所有已知子接口
    • +
    • 所有已知实现类
    • +
    • 类/接口声明
    • +
    • 类/接口说明
    • +
    +
      +
    • 嵌套类概要
    • +
    • 字段概要
    • +
    • 构造器概要
    • +
    • 方法概要
    • +
    +
      +
    • 字段详细资料
    • +
    • 构造器详细资料
    • +
    • 方法详细资料
    • +
    +

    每个概要条目都包含该项目的详细说明的第一句。概要条目按字母顺序排列, 而详细说明则按其在源代码中出现的顺序排列。这样保持了程序员所建立的逻辑分组。

    +
  • +
  • +

    注释类型

    +

    每个注释类型都有各自的页面, 其中包含以下部分:

    +
      +
    • 注释类型声明
    • +
    • 注释类型说明
    • +
    • 必需元素概要
    • +
    • 可选元素概要
    • +
    • 元素详细资料
    • +
    +
  • +
  • +

    枚举

    +

    每个枚举都有各自的页面, 其中包含以下部分:

    +
      +
    • 枚举声明
    • +
    • 枚举说明
    • +
    • 枚举常量概要
    • +
    • 枚举常量详细资料
    • +
    +
  • +
  • +

    使用

    +

    每个已文档化的程序包, 类和接口都有各自的“使用”页面。此页面介绍了使用给定类或程序包的任何部分的程序包, 类, 方法, 构造器和字段。对于给定的类或接口 A, 其“使用”页面包含 A 的子类, 声明为 A 的字段, 返回 A 的方法, 以及带有类型为 A 的参数的方法和构造器。访问此页面的方法是: 首先转至程序包, 类或接口, 然后单击导航栏中的 "使用" 链接。

    +
  • +
  • +

    树 (类分层结构)

    +

    对于所有程序包, 有一个类分层结构页面, 以及每个程序包的分层结构。每个分层结构页面都包含类的列表和接口的列表。从java.lang.Object开始, 按继承结构对类进行排列。接口不从java.lang.Object继承。

    +
      +
    • 查看“概览”页面时, 单击 "树" 将显示所有程序包的分层结构。
    • +
    • 查看特定程序包, 类或接口页面时, 单击 "树" 将仅显示该程序包的分层结构。
    • +
    +
  • +
  • +

    已过时的 API

    +

    已过时的 API 页面列出了所有已过时的 API。一般由于进行了改进并且通常提供了替代的 API, 所以建议不要使用已过时的 API。在将来的实现过程中, 可能会删除已过时的 API。

    +
  • +
  • +

    索引

    +

    索引 包含按字母顺序排列的所有类, 接口, 构造器, 方法和字段的列表。

    +
  • +
  • +

    上一个/下一个

    +

    这些链接使您可以转至下一个或上一个类, 接口, 程序包或相关页面。

    +
  • +
  • +

    框架/无框架

    +

    这些链接用于显示和隐藏 HTML 框架。所有页面均具有有框架和无框架两种显示方式。

    +
  • +
  • +

    所有类

    +

    所有类链接显示所有类和接口 (除了非静态嵌套类型)。

    +
  • +
  • +

    序列化表格

    +

    每个可序列化或可外部化的类都有其序列化字段和方法的说明。此信息对重新实现者有用, 而对使用 API 的开发者则没有什么用处。尽管导航栏中没有链接, 但您可以通过下列方式获取此信息: 转至任何序列化类, 然后单击类说明的 "另请参阅" 部分中的 "序列化表格"。

    +
  • +
  • +

    常量字段值

    +

    常量字段值页面列出了静态最终字段及其值。

    +
  • +
+此帮助文件适用于使用标准 doclet 生成的 API 文档。
+ +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/index-all.html b/target/apidocs/index-all.html new file mode 100644 index 0000000..08b0687 --- /dev/null +++ b/target/apidocs/index-all.html @@ -0,0 +1,337 @@ + + + + + + +索引 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
A C E F G I M R S T U V  + + +

A

+
+
AbstractWithLimitPlugin - com.iqudoo.framework.mybatis.abstracts中的类
+
 
+
AbstractWithLimitPlugin() - 类 的构造器com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
addElementWithBestPosition(XmlElement, XmlElement) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
在最佳位置添加节点
+
+
addMethodWithBestPosition(InnerClass, Method) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
在最佳位置添加方法
+
+
addMethodWithBestPosition(Interface, Method) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
在最佳位置添加方法
+
+
addMethodWithBestPosition(InnerEnum, Method) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
在最佳位置添加方法
+
+
addMethodWithBestPosition(TopLevelClass, Method) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
在最佳位置添加方法
+
+
+ + + +

C

+
+
clientGenerated(Interface, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin
+
 
+
com.iqudoo.framework.mybatis - 程序包 com.iqudoo.framework.mybatis
+
 
+
com.iqudoo.framework.mybatis.abstracts - 程序包 com.iqudoo.framework.mybatis.abstracts
+
 
+
com.iqudoo.framework.mybatis.hook - 程序包 com.iqudoo.framework.mybatis.hook
+
 
+
com.iqudoo.framework.mybatis.utils - 程序包 com.iqudoo.framework.mybatis.utils
+
 
+
contextGenerateAdditionalJavaFiles(IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
+
+
核心方法:视图表过滤 + 生成完整Repository代码
+
+
contextGenerateAdditionalJavaFiles(IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
+
+
核心方法:仅为视图表生成 RepoView 代码
+
+
+ + + +

E

+
+
ElementTools - com.iqudoo.framework.mybatis.utils中的类
+
 
+
ElementTools() - 类 的构造器com.iqudoo.framework.mybatis.utils.ElementTools
+
 
+
+ + + +

F

+
+
FormatTools - com.iqudoo.framework.mybatis.utils中的类
+
 
+
FormatTools() - 类 的构造器com.iqudoo.framework.mybatis.utils.FormatTools
+
 
+
+ + + +

G

+
+
generateField(String, JavaVisibility, FullyQualifiedJavaType, String) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成属性
+
+
generateGetterMethod(Field) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成Filed的Get方法
+
+
generateLimitElement(XmlElement) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
generateLimitElement(XmlElement) - 接口 中的方法com.iqudoo.framework.mybatis.hook.ISelectSelectivePluginHook
+
 
+
generateMethod(String, JavaVisibility, FullyQualifiedJavaType, Parameter...) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成方法
+
+
generateMethodBody(Method, String...) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成方法实现体
+
+
generateSetterMethod(Field) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成Filed的Set方法
+
+
generateStaticFinalField(String, FullyQualifiedJavaType, String) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
生成静态常量
+
+
getModelTypeWithBLOBs(IntrospectedTable) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
获取Model有BLOBs类时的类型
+
+
getModelTypeWithoutBLOBs(IntrospectedTable) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.ElementTools
+
+
获取Model没有BLOBs类时的类型
+
+
+ + + +

I

+
+
initialized(IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
ISelectSelectivePluginHook - com.iqudoo.framework.mybatis.hook中的接口
+
 
+
+ + + +

M

+
+
modelExampleClassGenerated(TopLevelClass, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
+ + + +

R

+
+
replaceComment(CommentGenerator, XmlElement) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
替换已有注释
+
+
replaceGeneralMethodComment(CommentGenerator, Method, IntrospectedTable) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
替换已有方法注释
+
+
+ + + +

S

+
+
setContext(Context) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
+
 
+
setContext(Context) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
+
 
+
setProperties(Properties) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
+
 
+
setProperties(Properties) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
+
 
+
sqlMapDocumentGenerated(Document, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin
+
 
+
sqlMapSelectAllElementGenerated(XmlElement, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement, IntrospectedTable) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
+ + + +

T

+
+
TapeMybatisGeneratorPlugin - com.iqudoo.framework.mybatis中的类
+
 
+
TapeMybatisGeneratorPlugin() - 类 的构造器com.iqudoo.framework.mybatis.TapeMybatisGeneratorPlugin
+
 
+
TapeRepositoryGeneratorPlugin - com.iqudoo.framework.mybatis中的类
+
+
MyBatis Generator 1.4.1
+
+
TapeRepositoryGeneratorPlugin() - 类 的构造器com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
+
 
+
TapeRepoviewGeneratorPlugin - com.iqudoo.framework.mybatis中的类
+
+
MyBatis Generator 1.4.1 适配版:视图表专用 RepoView 生成插件
+
+
TapeRepoviewGeneratorPlugin() - 类 的构造器com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
+
 
+
+ + + +

U

+
+
upFirstChar(String) - 类 中的静态方法com.iqudoo.framework.mybatis.utils.FormatTools
+
+
首字母大写
+
+
+ + + +

V

+
+
validate(List<String>) - 类 中的方法com.iqudoo.framework.mybatis.abstracts.AbstractWithLimitPlugin
+
 
+
validate(List<String>) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepositoryGeneratorPlugin
+
 
+
validate(List<String>) - 类 中的方法com.iqudoo.framework.mybatis.TapeRepoviewGeneratorPlugin
+
 
+
+A C E F G I M R S T U V 
+ +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/index.html b/target/apidocs/index.html new file mode 100644 index 0000000..fc20996 --- /dev/null +++ b/target/apidocs/index.html @@ -0,0 +1,76 @@ + + + + + + +tape-mybatis-generator-plugin 1.0-SNAPSHOT API + + + + + + + + + +<noscript> +<div>您的浏览器已禁用 JavaScript。</div> +</noscript> +<h2>框架预警</h2> +<p>请使用框架功能查看此文档。如果看到此消息, 则表明您使用的是不支持框架的 Web 客户机。链接到<a href="overview-summary.html">非框架版本</a>。</p> + + + diff --git a/target/apidocs/overview-frame.html b/target/apidocs/overview-frame.html new file mode 100644 index 0000000..faf91c2 --- /dev/null +++ b/target/apidocs/overview-frame.html @@ -0,0 +1,25 @@ + + + + + + +概览列表 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + +

 

+ + diff --git a/target/apidocs/overview-summary.html b/target/apidocs/overview-summary.html new file mode 100644 index 0000000..8508f05 --- /dev/null +++ b/target/apidocs/overview-summary.html @@ -0,0 +1,152 @@ + + + + + + +概览 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

tape-mybatis-generator-plugin 1.0-SNAPSHOT API

+
+ + +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/overview-tree.html b/target/apidocs/overview-tree.html new file mode 100644 index 0000000..41bdb9c --- /dev/null +++ b/target/apidocs/overview-tree.html @@ -0,0 +1,158 @@ + + + + + + +类分层结构 (tape-mybatis-generator-plugin 1.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + + +
+

类分层结构

+ +

接口分层结构

+ +
+ +
+ + + + + + + +
+ + +

Copyright © 2026. All rights reserved.

+ + diff --git a/target/apidocs/package-list b/target/apidocs/package-list new file mode 100644 index 0000000..68387df --- /dev/null +++ b/target/apidocs/package-list @@ -0,0 +1,4 @@ +com.iqudoo.framework.mybatis +com.iqudoo.framework.mybatis.abstracts +com.iqudoo.framework.mybatis.hook +com.iqudoo.framework.mybatis.utils diff --git a/target/apidocs/script.js b/target/apidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/target/apidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/target/apidocs/stylesheet.css b/target/apidocs/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/target/apidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/target/classes/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.class b/target/classes/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.class new file mode 100644 index 0000000..c80c95e Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.class b/target/classes/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.class new file mode 100644 index 0000000..8be11ec Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.class b/target/classes/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.class new file mode 100644 index 0000000..a6e9815 Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.class b/target/classes/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.class new file mode 100644 index 0000000..5c0904a Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/abstracts/AbstractWithLimitPlugin.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.class b/target/classes/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.class new file mode 100644 index 0000000..b8b7a22 Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/hook/ISelectSelectivePluginHook.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/utils/ElementTools.class b/target/classes/com/iqudoo/framework/mybatis/utils/ElementTools.class new file mode 100644 index 0000000..b812292 Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/utils/ElementTools.class differ diff --git a/target/classes/com/iqudoo/framework/mybatis/utils/FormatTools.class b/target/classes/com/iqudoo/framework/mybatis/utils/FormatTools.class new file mode 100644 index 0000000..1c75ba8 Binary files /dev/null and b/target/classes/com/iqudoo/framework/mybatis/utils/FormatTools.class differ diff --git a/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml b/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml new file mode 100644 index 0000000..8b89c97 --- /dev/null +++ b/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml @@ -0,0 +1,10 @@ + + + + + + + + + src/main/javadoc + diff --git a/target/javadoc-bundle-options/package-list b/target/javadoc-bundle-options/package-list new file mode 100644 index 0000000..351c186 --- /dev/null +++ b/target/javadoc-bundle-options/package-list @@ -0,0 +1,217 @@ +java.applet +java.awt +java.awt.color +java.awt.datatransfer +java.awt.dnd +java.awt.event +java.awt.font +java.awt.geom +java.awt.im +java.awt.im.spi +java.awt.image +java.awt.image.renderable +java.awt.print +java.beans +java.beans.beancontext +java.io +java.lang +java.lang.annotation +java.lang.instrument +java.lang.invoke +java.lang.management +java.lang.ref +java.lang.reflect +java.math +java.net +java.nio +java.nio.channels +java.nio.channels.spi +java.nio.charset +java.nio.charset.spi +java.nio.file +java.nio.file.attribute +java.nio.file.spi +java.rmi +java.rmi.activation +java.rmi.dgc +java.rmi.registry +java.rmi.server +java.security +java.security.acl +java.security.cert +java.security.interfaces +java.security.spec +java.sql +java.text +java.text.spi +java.time +java.time.chrono +java.time.format +java.time.temporal +java.time.zone +java.util +java.util.concurrent +java.util.concurrent.atomic +java.util.concurrent.locks +java.util.function +java.util.jar +java.util.logging +java.util.prefs +java.util.regex +java.util.spi +java.util.stream +java.util.zip +javax.accessibility +javax.activation +javax.activity +javax.annotation +javax.annotation.processing +javax.crypto +javax.crypto.interfaces +javax.crypto.spec +javax.imageio +javax.imageio.event +javax.imageio.metadata +javax.imageio.plugins.bmp +javax.imageio.plugins.jpeg +javax.imageio.spi +javax.imageio.stream +javax.jws +javax.jws.soap +javax.lang.model +javax.lang.model.element +javax.lang.model.type +javax.lang.model.util +javax.management +javax.management.loading +javax.management.modelmbean +javax.management.monitor +javax.management.openmbean +javax.management.relation +javax.management.remote +javax.management.remote.rmi +javax.management.timer +javax.naming +javax.naming.directory +javax.naming.event +javax.naming.ldap +javax.naming.spi +javax.net +javax.net.ssl +javax.print +javax.print.attribute +javax.print.attribute.standard +javax.print.event +javax.rmi +javax.rmi.CORBA +javax.rmi.ssl +javax.script +javax.security.auth +javax.security.auth.callback +javax.security.auth.kerberos +javax.security.auth.login +javax.security.auth.spi +javax.security.auth.x500 +javax.security.cert +javax.security.sasl +javax.sound.midi +javax.sound.midi.spi +javax.sound.sampled +javax.sound.sampled.spi +javax.sql +javax.sql.rowset +javax.sql.rowset.serial +javax.sql.rowset.spi +javax.swing +javax.swing.border +javax.swing.colorchooser +javax.swing.event +javax.swing.filechooser +javax.swing.plaf +javax.swing.plaf.basic +javax.swing.plaf.metal +javax.swing.plaf.multi +javax.swing.plaf.nimbus +javax.swing.plaf.synth +javax.swing.table +javax.swing.text +javax.swing.text.html +javax.swing.text.html.parser +javax.swing.text.rtf +javax.swing.tree +javax.swing.undo +javax.tools +javax.transaction +javax.transaction.xa +javax.xml +javax.xml.bind +javax.xml.bind.annotation +javax.xml.bind.annotation.adapters +javax.xml.bind.attachment +javax.xml.bind.helpers +javax.xml.bind.util +javax.xml.crypto +javax.xml.crypto.dom +javax.xml.crypto.dsig +javax.xml.crypto.dsig.dom +javax.xml.crypto.dsig.keyinfo +javax.xml.crypto.dsig.spec +javax.xml.datatype +javax.xml.namespace +javax.xml.parsers +javax.xml.soap +javax.xml.stream +javax.xml.stream.events +javax.xml.stream.util +javax.xml.transform +javax.xml.transform.dom +javax.xml.transform.sax +javax.xml.transform.stax +javax.xml.transform.stream +javax.xml.validation +javax.xml.ws +javax.xml.ws.handler +javax.xml.ws.handler.soap +javax.xml.ws.http +javax.xml.ws.soap +javax.xml.ws.spi +javax.xml.ws.spi.http +javax.xml.ws.wsaddressing +javax.xml.xpath +org.ietf.jgss +org.omg.CORBA +org.omg.CORBA.DynAnyPackage +org.omg.CORBA.ORBPackage +org.omg.CORBA.TypeCodePackage +org.omg.CORBA.portable +org.omg.CORBA_2_3 +org.omg.CORBA_2_3.portable +org.omg.CosNaming +org.omg.CosNaming.NamingContextExtPackage +org.omg.CosNaming.NamingContextPackage +org.omg.Dynamic +org.omg.DynamicAny +org.omg.DynamicAny.DynAnyFactoryPackage +org.omg.DynamicAny.DynAnyPackage +org.omg.IOP +org.omg.IOP.CodecFactoryPackage +org.omg.IOP.CodecPackage +org.omg.Messaging +org.omg.PortableInterceptor +org.omg.PortableInterceptor.ORBInitInfoPackage +org.omg.PortableServer +org.omg.PortableServer.CurrentPackage +org.omg.PortableServer.POAManagerPackage +org.omg.PortableServer.POAPackage +org.omg.PortableServer.ServantLocatorPackage +org.omg.PortableServer.portable +org.omg.SendingContext +org.omg.stub.java.rmi +org.w3c.dom +org.w3c.dom.bootstrap +org.w3c.dom.events +org.w3c.dom.ls +org.w3c.dom.views +org.xml.sax +org.xml.sax.ext +org.xml.sax.helpers diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..ef0f385 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=tape-mybatis-generator-plugin +groupId=com.iqudoo.framework +version=1.0-SNAPSHOT diff --git a/target/maven-javadoc-plugin-stale-data.txt b/target/maven-javadoc-plugin-stale-data.txt new file mode 100644 index 0000000..bbb355b --- /dev/null +++ b/target/maven-javadoc-plugin-stale-data.txt @@ -0,0 +1,19 @@ +cmd.exe +/X +/C +""D:\Program Files\JetBrains\Jdks\corretto-1.8.0_352\bin\javadoc.exe" @options @argfile" +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\allclasses-frame.html = 1770145502546 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\allclasses-noframe.html = 1770145502549 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\argfile = 1770145498938 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\constant-values.html = 1770145502237 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\deprecated-list.html = 1770145502540 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\help-doc.html = 1770145502562 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\index-all.html = 1770145502527 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\index.html = 1770145502553 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\options = 1770145498936 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\overview-frame.html = 1770145502029 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\overview-summary.html = 1770145502557 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\overview-tree.html = 1770145502449 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\package-list = 1770145502025 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\script.js = 1770145502744 +D:\gitea\tools\tape-mybatis-generator-plugin\target\apidocs\stylesheet.css = 1770145502740 \ No newline at end of file diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..7b9ddfe --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,7 @@ +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\TapeRepoviewGeneratorPlugin.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\TapeMybatisGeneratorPlugin.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\utils\ElementTools.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\utils\FormatTools.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\abstracts\AbstractWithLimitPlugin.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\TapeRepositoryGeneratorPlugin.java +D:\gitea\tools\tape-mybatis-generator-plugin\src\main\java\com\iqudoo\framework\mybatis\hook\ISelectSelectivePluginHook.java diff --git a/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-javadoc.jar b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-javadoc.jar new file mode 100644 index 0000000..ea3e625 Binary files /dev/null and b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-javadoc.jar differ diff --git a/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-sources.jar b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-sources.jar new file mode 100644 index 0000000..6912970 Binary files /dev/null and b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT-sources.jar differ diff --git a/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..d079541 Binary files /dev/null and b/target/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar differ