因为要用一个模糊查询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;