国产性爱无码高清视频_台湾av毛片不卡免费_亚洲av美女在线播放啊_久久国产乱子伦免费精品

?
徐州北大青鳥
當前位置: 主頁 > 學在青鳥 > 編程技巧 >

如何對多重唯一鍵入庫前檢查

時間:2011-04-13 10:22來源:中博IT教育 作者:代碼如詩 點擊:
在我們實際操作數(shù)據(jù)庫時,有時在一個表中有多個唯一鍵,比如會員號及身份證號及其他標識,為了防止出現(xiàn)入庫錯誤,在存入數(shù)據(jù)庫之前就要對數(shù)據(jù)進行多重唯一鍵檢查

在我們實際操作數(shù)據(jù)庫時,有時在一個表中有多個唯一鍵,比如會員號及身份證號及其他標識,為了防止出現(xiàn)入庫錯誤,在存入數(shù)據(jù)庫之前就要對數(shù)據(jù)
進行多重唯一鍵檢查,查看是否有重復數(shù)據(jù),參考代碼如下:

/**
 * 檢查數(shù)據(jù)表中是否存在相同值的數(shù)據(jù)
 * @param <T>
 * @param em        EntityManager
 * @param entity    Entity 類
 * @param id        需要查詢的主鍵,新增時輸入 null
 * @param fields    需要檢查的字段名稱
 * @param values    需要檢查的字段的值
 * @return
 *     有重復數(shù)據(jù)時返回 true; 沒有重復數(shù)據(jù)時返回 false
 *
 * @代碼如詩 2010-2-20 下午02:12:34
 */
@SuppressWarnings("unchecked")
public static <T> boolean hasExistData(EntityManager em, Class<T> entity,
        Object id, String[] fields, Object[] values) {
    if(em == null || entity == null) {
        throw new IllegalArgumentException("EntityManager 與 Entity Class 兩個參數(shù)為空");
    }
    if(fields == null || values == null || fields.length == 0 || values.length == 0) {
        throw new IllegalArgumentException("字段數(shù)量或值數(shù)量不能為空");
    }
    if(fields.length != values.length) {
        throw new IllegalArgumentException("字段數(shù)量與值數(shù)量不一致");
    }
    StringBuffer buff = new StringBuffer();
    buff.append("SELECT t FROM ").append(entity.getSimpleName()).append(" t WHERE t.id <> :id ");
    for(int i = 0; i < fields.length; i++) {
        buff.append(" AND t.").append(fields[i]).append(" = :").append(fields[i]);
    }
    // System.out.println(buff.toString());
    Query q = em.createQuery(buff.toString());
    if(id != null) {
        q.setParameter("id", id);
    } else {
        q.setParameter("id", 0);
    }
    for(int i = 0; i < fields.length; i++) {
        q.setParameter(fields[i], values[i]);
    }
    List<T> list = q.getResultList();
    if(list == null || list.size() == 0) {
        return false;
    }
    return true;
}

試聽課
(責任編輯:代碼如詩)
------分隔線----------------------------
欄目列表
推薦內(nèi)容