关于数据去重(distinct)

来源:互联网 发布:a字裙淘宝 编辑:程序博客网 时间:2024/06/06 07:52

数据去重SQL:

//DISTINCT对下面的字段进行去重hqlStr.append(" SELECT DISTINCTsi.DOCTOR_ID,SI.PATIENT_ID,ME.NAME,ME.ID_NUMBER,ME.GENDER_CODE,ME.PHONE_NUM,ME.BIRTHDAY,ME.MEMBER_PHOTO,ME.UNIT_ID,ME.ASSIGNED_FLAG  FROM T_SIGN_CONTRACT si,T_MEMBER me WHERE si.PATIENT_ID=ME.MEMBER_ID  AND si.DOCTOR_ID='"+ doctorId + "'");

service实现层的方法代码如下:

public PagerModel findMemberByDoctorId(SignContractDto dto){     PagerModel pagerModel = dto.getPageModel();     if(pagerModel==null){        pagerModel = new PagerModel();        dto.setPageModel(pagerModel);        }        //调用DAO 拼接查询条件        signContractDao.buildPagerModelQuery(dto);        //调用分页查询方法        commonService.fillSqlPagerModelData(pagerModel,FindMyMemberVo.class,"SI.DOCTOR_ID");        return pagerModel;    }

这里有个问题,就是dao层中的数据去重,但是在commonService中的分页查询公共方法没有去重,所以会出现pagedata的数据可能会与totals中的数据不同(在有数据重复的情况下)。

修改方法:

    public PagerModel findMemberByDoctorId(SignContractDto dto){        PagerModel pagerModel = dto.getPageModel();        if(pagerModel==null){            pagerModel = new PagerModel();            dto.setPageModel(pagerModel);        }        //调用DAO 拼接查询条件        signContractDao.buildPagerModelQuery(dto);        //调用分页查询方法        commonService.fillSqlPagerModelData(pagerModel,FindMyMemberVo.class,"distinct(SI.PATIENT_ID)");        return pagerModel;    }

在fillSqlPagerModelData的第三个参数写上要去重的条件distinct(SI.PATIENT_ID)(这里不是写主键!)

原创粉丝点击