findAndById

This commit is contained in:
Jeremy Liang
2026-02-04 04:47:08 +08:00
parent 3ec21f6f35
commit ce1514fd39
4 changed files with 33 additions and 34 deletions

View File

@@ -31,7 +31,7 @@
- `deleteAll({Example} example, boolean release)` - 删除(批量,支持物理删除) - `deleteAll({Example} example, boolean release)` - 删除(批量,支持物理删除)
- `recoverById(long id)` - 从回收站恢复(单个) - `recoverById(long id)` - 从回收站恢复(单个)
- `recoverAll({Example} example)` - 从回收站恢复(批量) - `recoverAll({Example} example)` - 从回收站恢复(批量)
- `findNoWhereById(long id)` - 查找(不区分有效/回收站) - `findAnyById(long id)` - 查找(不区分有效/回收站)
- `findValidById(long id)` - 查找有效记录(单个) - `findValidById(long id)` - 查找有效记录(单个)
- `findTrashById(long id)` - 查找回收站记录(单个) - `findTrashById(long id)` - 查找回收站记录(单个)
- `findValidOne({Example} example)` - 查找有效记录(单个,支持条件) - `findValidOne({Example} example)` - 查找有效记录(单个,支持条件)

View File

@@ -215,14 +215,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
recoverAllMethod.setAbstract(true); recoverAllMethod.setAbstract(true);
repositoryInterface.addMethod(recoverAllMethod); repositoryInterface.addMethod(recoverAllMethod);
// 7. findNoWhereById // 7. findAnyById
Method findNoWhereByIdMethod = new Method("findNoWhereById"); Method findAnyByIdMethod = new Method("findAnyById");
findNoWhereByIdMethod.setVisibility(JavaVisibility.PUBLIC); findAnyByIdMethod.setVisibility(JavaVisibility.PUBLIC);
findNoWhereByIdMethod.setReturnType(new FullyQualifiedJavaType(modelClassName)); findAnyByIdMethod.setReturnType(new FullyQualifiedJavaType(modelClassName));
findNoWhereByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); findAnyByIdMethod.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id"));
findNoWhereByIdMethod.addException(new FullyQualifiedJavaType("Throwable")); findAnyByIdMethod.addException(new FullyQualifiedJavaType("Throwable"));
findNoWhereByIdMethod.setAbstract(true); findAnyByIdMethod.setAbstract(true);
repositoryInterface.addMethod(findNoWhereByIdMethod); repositoryInterface.addMethod(findAnyByIdMethod);
// 8. findValidById // 8. findValidById
Method findValidByIdMethod = new Method("findValidById"); Method findValidByIdMethod = new Method("findValidById");
@@ -346,7 +346,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
implClass.addField(mapperField); implClass.addField(mapperField);
// 原有方法生成逻辑(无修改) // 原有方法生成逻辑(无修改)
generateFindNoWhereByIdMethod(implClass, modelClassName, exampleClassName); generateFindAnyByIdMethod(implClass, modelClassName, mapperFieldName, exampleClassName);
generateFindValidByIdMethod(implClass, modelClassName, exampleClassName); generateFindValidByIdMethod(implClass, modelClassName, exampleClassName);
generateFindTrashByIdMethod(implClass, modelClassName, exampleClassName); generateFindTrashByIdMethod(implClass, modelClassName, exampleClassName);
generateInsertMethod(implClass, modelClassName, mapperFieldName, introspectedTable); generateInsertMethod(implClass, modelClassName, mapperFieldName, introspectedTable);
@@ -439,23 +439,23 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
implClass.addMethod(method); implClass.addMethod(method);
} }
private void generateJavaFileToDisk(Interface intf, String packageName) { private void generateJavaFileToDisk(Interface anInterface, String packageName) {
try { try {
String packagePath = packageName.replace('.', File.separatorChar); String packagePath = packageName.replace('.', File.separatorChar);
File targetDir = new File(targetProject, packagePath); File targetDir = new File(targetProject, packagePath);
if (!targetDir.exists()) { if (!targetDir.exists()) {
boolean mkdirs = targetDir.mkdirs(); boolean mkdirs = targetDir.mkdirs();
if (!mkdirs) { if (!mkdirs) {
throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); throw new RuntimeException("Created dir: " + targetDir.getAbsolutePath());
} }
} }
String className = intf.getType().getShortName(); String className = anInterface.getType().getShortName();
File javaFile = new File(targetDir, className + ".java"); File javaFile = new File(targetDir, className + ".java");
String content = javaFormatter.getFormattedContent(intf); String content = javaFormatter.getFormattedContent(anInterface);
java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8));
System.out.println("成功生成接口文件:" + javaFile.getAbsolutePath()); System.out.println("Created: " + javaFile.getAbsolutePath());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("生成Repository接口失败" + intf.getType().getShortName(), e); throw new RuntimeException("Create failure: " + anInterface.getType().getShortName(), e);
} }
} }
@@ -466,7 +466,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
if (!targetDir.exists()) { if (!targetDir.exists()) {
boolean mkdirs = targetDir.mkdirs(); boolean mkdirs = targetDir.mkdirs();
if (!mkdirs) { if (!mkdirs) {
throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); throw new RuntimeException("Created dir: " + targetDir.getAbsolutePath());
} }
} }
@@ -474,9 +474,9 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
File javaFile = new File(targetDir, className + ".java"); File javaFile = new File(targetDir, className + ".java");
String content = javaFormatter.getFormattedContent(clazz); String content = javaFormatter.getFormattedContent(clazz);
java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8));
System.out.println("成功生成实现类文件:" + javaFile.getAbsolutePath()); System.out.println("Created: " + javaFile.getAbsolutePath());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("生成Repository实现类失败" + clazz.getType().getShortName(), e); throw new RuntimeException("Create failure: " + clazz.getType().getShortName(), e);
} }
} }
@@ -502,17 +502,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter {
implClass.addImportedType(new FullyQualifiedJavaType("java.util.List")); implClass.addImportedType(new FullyQualifiedJavaType("java.util.List"));
} }
private void generateFindNoWhereByIdMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { private void generateFindAnyByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName, String exampleClassName) {
Method method = new Method("findNoWhereById"); Method method = new Method("findAnyById");
method.addAnnotation("@Override"); method.addAnnotation("@Override");
method.setVisibility(JavaVisibility.PUBLIC); method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(new FullyQualifiedJavaType(modelClassName)); method.setReturnType(new FullyQualifiedJavaType(modelClassName));
method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id")); method.addParameter(new Parameter(new FullyQualifiedJavaType("long"), "id"));
method.addException(new FullyQualifiedJavaType("Throwable")); method.addException(new FullyQualifiedJavaType("Throwable"));
method.addBodyLine(modelClassName + " aDo = " + mapperFieldName + ".selectByPrimaryKey(id);");
method.addBodyLine(modelClassName + " aDo = findValidById(id);"); method.addBodyLine("if (aDo != null && aDo.getIsDelete() == 1) {");
method.addBodyLine("if (aDo == null) {"); method.addBodyLine(" return null;");
method.addBodyLine(" aDo = findTrashById(id);");
method.addBodyLine("}"); method.addBodyLine("}");
method.addBodyLine("return aDo;"); method.addBodyLine("return aDo;");

View File

@@ -305,23 +305,23 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter {
/** /**
* 手动将Java文件写入磁盘 * 手动将Java文件写入磁盘
*/ */
private void generateJavaFileToDisk(Interface intf, String packageName) { private void generateJavaFileToDisk(Interface anInterface, String packageName) {
try { try {
String packagePath = packageName.replace('.', File.separatorChar); String packagePath = packageName.replace('.', File.separatorChar);
File targetDir = new File(targetProject, packagePath); File targetDir = new File(targetProject, packagePath);
if (!targetDir.exists()) { if (!targetDir.exists()) {
boolean mkdirs = targetDir.mkdirs(); boolean mkdirs = targetDir.mkdirs();
if (!mkdirs) { if (!mkdirs) {
throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); throw new RuntimeException("Created dir: " + targetDir.getAbsolutePath());
} }
} }
String className = intf.getType().getShortName(); String className = anInterface.getType().getShortName();
File javaFile = new File(targetDir, className + ".java"); File javaFile = new File(targetDir, className + ".java");
String content = javaFormatter.getFormattedContent(intf); String content = javaFormatter.getFormattedContent(anInterface);
java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8));
System.out.println("成功生成视图Repo接口" + javaFile.getAbsolutePath()); System.out.println("Created: " + javaFile.getAbsolutePath());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("生成视图Repo接口失败" + intf.getType().getShortName(), e); throw new RuntimeException("Create failure: " + anInterface.getType().getShortName(), e);
} }
} }
@@ -332,16 +332,16 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter {
if (!targetDir.exists()) { if (!targetDir.exists()) {
boolean mkdirs = targetDir.mkdirs(); boolean mkdirs = targetDir.mkdirs();
if (!mkdirs) { if (!mkdirs) {
throw new RuntimeException("创建目录失败:" + targetDir.getAbsolutePath()); throw new RuntimeException("Created dir: " + targetDir.getAbsolutePath());
} }
} }
String className = clazz.getType().getShortName(); String className = clazz.getType().getShortName();
File javaFile = new File(targetDir, className + ".java"); File javaFile = new File(targetDir, className + ".java");
String content = javaFormatter.getFormattedContent(clazz); String content = javaFormatter.getFormattedContent(clazz);
java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8)); java.nio.file.Files.write(javaFile.toPath(), content.getBytes(StandardCharsets.UTF_8));
System.out.println("成功生成视图Repo实现类" + javaFile.getAbsolutePath()); System.out.println("Created: " + javaFile.getAbsolutePath());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("生成视图Repo实现类失败" + clazz.getType().getShortName(), e); throw new RuntimeException("Create failure: " + clazz.getType().getShortName(), e);
} }
} }