【问题标题】:how to prevent the duplicate names?如何防止重名?
【发布时间】:2013-01-01 13:55:47
【问题描述】:

任何机构都可以解释如何停止重复名称。如果有任何重复名称,那么我需要显示适当的错误消息,例如“名称已存在”。所以应用程序包含以下类merchant.java、MerchantDao.java、MerchantImpl。 java class.so 我需要在 MerchantImpl.java 类中实现方法,该方法包含停止重复商家名称的逻辑。

Merchat.java

public class Merchant
 {
 private String merchant Name;
etc
 } 

 MerchantImpl.java
  public class MerchantImpl
  {
need to define a method to prevent duplicate names;
     }

【问题讨论】:

  • 你有所有商家的列表吗?
  • 是的,我在databse中有商家列表。如果我通过merchant.jsp页面给出了已经退出的mechantName,那么它将显示“商家名称已经存在”请提供逻辑。
  • 我需要在 MerchantImpl 中实现类似(checkduplicate()) 的方法,即需要将输入详细信息与数据库名称(如果存在)进行比较,然后在浏览器上显示相应的错误消息,以便提供逻辑跨度>

标签: java spring-mvc


【解决方案1】:

您可以覆盖 Merchant 类的 hashCode 和 equals 方法

@Override
public int hashCode() {
    return name.hashCode();
}

@Override
// This really depends on if you want to compare only objects or names too.
// The following compares names too.
public boolean equals(final Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    final Merchant other = (Merchant) obj;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    return true;
}

然后,将 Merchant 对象存储在 Set 集合中(以便更快地查找)。添加适当的检查以查看集合中是否已存在新商家的名称。

Set<Merchant> merchants = new HashSet<>()
// Populated the merchants

现在检查

// if merchant names are unique
merchants.contains(newMerchantObj)

P.S :我只建议使用商家名称的哈希码覆盖哈希码,因为您需要为商家维护唯一的名称。

【讨论】:

  • 在这种情况下你不妨覆盖.equals()
  • 请提供逻辑 public int checkDuplicate(){}。这个方法从 mycontroller 类调用。所以这里提供逻辑
  • 不要指望人们只为您提供 SO 中的逻辑实现。你得到了超过 5 个答案。只需尝试实现任何一个。
  • 感谢@fge 指出我们也应该重写equals()。在答案中添加它。
【解决方案2】:

将所有名称保存在集合中,并在给出新名称时检查该名称是否已经在集合中。代码可能如下所示(您可能不需要新类):

class NameChecker {
    Set<String> names = new HashSet<String>();

    public void addName(String name) {
        if (names.contains(name)) {
            //print message
        } else {
            names.add(name);
            // do what you have to with new names.
        }
    }
}

【讨论】:

  • 我的应用程序包含 merchat.java、MerchantDao.java、MerchantImpl.java 类,所以我需要从 mucontroller 类(spring-mvc)调用 Merchant Impl 类的 checkDuplicates(),所以请提供 code.i需要将表单属性(merchantName)与数据库中的merchantTable进行比较
  • 出于性能原因,我仍会将集合保留在内存中,并在应用程序从数据库中已添加的名称启动时将其填充。
【解决方案3】:

将名称存储在集合中。不幸的是,您没有提供显示如何获得新名称的代码,但以下代码示例应该对您有所帮助:

// 定义 设置名称 = new HashSet();

// 代码中获得新名称的其他位置: if (names.contains(name)) { // 打印错误信息 } 名称.添加(名称); // 添加新名称。

【讨论】:

    【解决方案4】:

    如果存在则在数据库中搜索输入名称,然后在数据库中插入错误。

    if(name exist in database)
    error
    else 
    add name in database.
    

    实际代码取决于您用于维护数据库的数据结构。

    if(name_list.contains(name))
    error
    else 
    name_list.add(name);
    

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 1970-01-01
      • 2012-08-09
      • 2018-10-09
      • 2015-04-26
      • 2013-02-08
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多