Java 新增编辑名称重复校验
在开发应用程序时,我们常常需要对用户输入的数据进行校验,以确保数据的有效性和一致性。在许多情况下,尤其在增删改查(CRUD)操作中,名称重复校验是不可或缺的一部分。在这篇文章中,我们将探讨如何在 Java 中实现名称重复校验,并提供示例代码来帮助您理解该过程。
什么是名称重复校验
名称重复校验是指在用户提交数据时,检查待保存的名称是否已经存在于数据库中。这个过程在多个程序中都非常有用,比如在线注册、商品管理等场景。我们希望通过这种方式,避免因为名称重复而导致的混淆或错误。
实现步骤
我们将通过以下步骤来实现名称重复校验:
- 创建数据模型
- 设计接口
- 实现服务层的逻辑
- 创建控制层(Controller)
- 测试功能
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();
}
}
此控制器通过命令行界面与用户交互,让用户输入名称,并调用ItemService
的addItem
方法来处理名称的添加。
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 中的名称重复校验有更深刻的理解。在实际开发中,名称重复校验不仅提高了用户体验,同时也保障了数据的准确性。大家可以在实际项目中根据需求灵活应用这个思路。