Java 新增编辑名称重复校验

在开发应用程序时,我们常常需要对用户输入的数据进行校验,以确保数据的有效性和一致性。在许多情况下,尤其在增删改查(CRUD)操作中,名称重复校验是不可或缺的一部分。在这篇文章中,我们将探讨如何在 Java 中实现名称重复校验,并提供示例代码来帮助您理解该过程。

什么是名称重复校验

名称重复校验是指在用户提交数据时,检查待保存的名称是否已经存在于数据库中。这个过程在多个程序中都非常有用,比如在线注册、商品管理等场景。我们希望通过这种方式,避免因为名称重复而导致的混淆或错误。

实现步骤

我们将通过以下步骤来实现名称重复校验:

  1. 创建数据模型
  2. 设计接口
  3. 实现服务层的逻辑
  4. 创建控制层(Controller)
  5. 测试功能

1. 创建数据模型

首先,我们需要创建一个简单的Item类,这个类将包含我们的名称字段。

public class Item {
    private Long id;
    private String name;

    // 构造函数
    public Item(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    // Getter和Setter
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2. 设计接口

接下来,我们需要一个接口来定义数据库操作,这里定义一个ItemRepository接口。

import java.util.List;

public interface ItemRepository {
    List<Item> findAll();
    Item findByName(String name);
    void save(Item item);
}

3. 实现服务层的逻辑

接下来,我们将实现一个服务层,用于处理业务逻辑。我们需要在该层中添加名称重复的校验逻辑。

import java.util.ArrayList;
import java.util.List;

public class ItemService {
    private List<Item> items = new ArrayList<>();

    public void addItem(Item item) throws Exception {
        if (isNameDuplicate(item.getName())) {
            throw new Exception("名称已存在,无法添加!");
        }
        items.add(item);
    }

    private boolean isNameDuplicate(String name) {
        return items.stream().anyMatch(item -> item.getName().equalsIgnoreCase(name));
    }

    public List<Item> getItems() {
        return items;
    }
}

在上面的代码中,我们用一个简单的ArrayList来保存项目。addItem方法首先检查名称是否重复,如果重复则抛出异常。

4. 创建控制层(Controller)

现在我们来创建一个控制器类,接收用户输入并调用服务层的方法。

import java.util.Scanner;

public class ItemController {
    private ItemService itemService = new ItemService();
    
    public void run() {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入名称(exit退出):");
            String name = scanner.nextLine();
            
            if ("exit".equalsIgnoreCase(name)) {
                break;
            }
            
            try {
                itemService.addItem(new Item(System.currentTimeMillis(), name));
                System.out.println("项已添加: " + name);
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        scanner.close();
    }
}

此控制器通过命令行界面与用户交互,让用户输入名称,并调用ItemServiceaddItem方法来处理名称的添加。

5. 测试功能

现在我们可以测试这个功能,创建一个Main类进行启动。

public class Main {
    public static void main(String[] args) {
        ItemController controller = new ItemController();
        controller.run();
    }
}

总结

上述代码展示了如何在 Java 应用中实现名称重复校验的过程。通过创建数据模型、接口、服务层及控制层,我们构建了一个简单的系统,能够有效地检查用户输入名称的重复性。这种设计模式不仅提高了代码的可维护性,也使得后续扩展功能变得更加简单。

接下来我们可以用一些 UML 图来帮助理解系统的结构。

classDiagram
    class Item {
        +Long id
        +String name
        +getId()
        +setId()
        +getName()
        +setName()
    }
    class ItemRepository {
        +List<Item> findAll()
        +Item findByName(String name)
        +void save(Item item)
    }
    class ItemService {
        +void addItem(Item item)
        +boolean isNameDuplicate(String name)
        +List<Item> getItems()
    }
    class ItemController {
        +void run()
    }

    ItemController --> ItemService
    ItemService --> Item
    ItemService --> ItemRepository
journey
    title 增加项的过程
    section 用户输入
      用户输入名称: 5: 用户
    section 校验名称
      检查名称是否存在: 5: 系统一
      如果存在: 5: 系统二
      如果不存在: 5: 系统三
    section 添加项
      保存项目: 5: 系统四

结尾

在本篇文章中,我们探讨了如何在 Java 中实现名称重复校验。通过直观的代码示例和 UML 图解,我们详细阐述了每个步骤和层次的职责。希望通过此文,您能对 Java 中的名称重复校验有更深刻的理解。在实际开发中,名称重复校验不仅提高了用户体验,同时也保障了数据的准确性。大家可以在实际项目中根据需求灵活应用这个思路。