java后台日期怎么去重,JAVA后台业务实现去重
不使用Mysql的DISTINCT,在后台业务实现去重
在数据俩非常大的情况下,使用Mysql的DISTINCT,会对查询造成非常大的影响
所以需要在后台实现去重,方法如下:
去重,首先想到的是使用Set集合,
但有主键id的情况下,需要在实体类中重写equal()和hashCode()方法
数据库信息:
实体类(省略get set方法):
private Integer id;
private String sex;
private String project;
private String name;
@Override
public String toString() {
return "User{" +
"id=" + id +
", sex='" + sex + '\'' +
", project='" + project + '\'' +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof User)) {
return false;
}
User user = (User) o;
return Objects.equals(getSex(), user.getSex()) &&
Objects.equals(getProject(), user.getProject()) &&
Objects.equals(getName(), user.getName());
}
@Override
public int hashCode() {
return Objects.hash(getSex(), getProject(), getName());
}
业务层(使用set实现去重):
public HashSetselectAll() {
long start = System.currentTimeMillis();
Listuser = null;
HashSetset =null;
try {
user = returnFixedSex.ReturnFixedBySelectAll();
long end = System.currentTimeMillis();
LOGGER.info("查询全部数据完成,共计消耗时间:" + (end - start) / 1000);
set=new HashSet<>();
for (User user1 : user) {
set.add(user1);
}
} catch (Exception fullMessage) {
fullMessage.printStackTrace();
LOGGER.error("数据查询失败", fullMessage);
}
return set;
}
至此,使用Java后台实现去重,测试返回信息如下: