因爲要用一個模糊查詢autocomplete,然後默認可以查代碼和名稱,所以在數據庫查詢的時候必須進行like 兩列,也許這個方式不對,但在獲取了兩個list進行合併的時候遇到了問題,因爲list中存的是類,所以還有不少麻煩。廢話不多說,直接貼代碼。
String param = "%"+aparam+"%";
String sql1 = "select c.* from tp_examkc c where c.kcdm like ? and rownum <= 10 order by c.kcdm " ;
String sql2 =" select c.* from tp_examkc c where c.kcmc like ? and rownum <= 10 order by c.kcdm";
List<ExamKkkc> list1 = this.qeryList(sql1, param, ExamKkkc.class);
List<ExamKkkc> list2 = this.qeryList(sql2, param, ExamKkkc.class);
如果list中存在 的都是簡單的string或者int等類型,處理非常簡單,
public static List mergeList(List list1, List list2){
list1.removeAll(list2);
list2.addAll(list1);
return list2;
}
但是因爲list中存儲的是類,這個時候要在 存的類中做文章了,我是走了邪道。
package com.oumasoft.tp.entity;
import java.io.Serializable;
/**
* @date 2017-06-20 09:07:54
* @author zq.big
*
*/
public class ExamKkkc implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;
private String kcdm;
private String kcmc;
private String zklb;
private String kksj_i;
private String remark;
private String kcxf;
private String verify;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKcdm() {
return kcdm;
}
public void setKcdm(String kcdm) {
this.kcdm = kcdm;
}
public String getZklb() {
return zklb;
}
public void setZklb(String zklb) {
this.zklb = zklb;
}
public String getKksj_i() {
return kksj_i;
}
public void setKksj_i(String kksj_i) {
this.kksj_i = kksj_i;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getKcmc() {
return kcmc;
}
public void setKcmc(String kcmc) {
this.kcmc = kcmc;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public String getKcxf() {
return kcxf;
}
public void setKcxf(String kcxf) {
this.kcxf = kcxf;
}
public String getVerify() {
return verify;
}
public void setVerify(String verify) {
this.verify = verify;
}
public ExamKkkc(){}
public ExamKkkc(String id, String kcdm, String kcmc, String zklb,
String kksj_i, String remark, String kcxf, String verify) {
super();
this.id = id;
this.kcdm = kcdm;
this.kcmc = kcmc;
this.zklb = zklb;
this.kksj_i = kksj_i;
this.remark = remark;
this.kcxf = kcxf;
this.verify = verify;
}//在這裏覆寫了新的equals和hashcode的方法。
@Override
public boolean equals(Object obj) {
ExamKkkc e=(ExamKkkc)obj;
return id.equals(e.id) && kcmc.equals(e.kcmc);
}
@Override
public int hashCode() {
String in = id + kcmc;
return in.hashCode();
}
}
覆寫這兩個方法後,在dao層就可以做如下處理了。 簡單粗暴。
List<ExamKkkc> list3 = new ArrayList<ExamKkkc>();
list1.addAll(list2);
Set set1 = new HashSet(list1);
list3.addAll(set1);
return list3;