@Override
public List<Dst> getData(String qoStartTime, String qoEndTime, String regionName, List<String> codes) {
List<Object> params = new ArrayList<>();
StringBuilder sql = new StringBuilder("select * from cn_com_DST dst ");
sql.append(" force index(IDX_DATA_DST_DATA_CODE) where 1=1 ");
if (StringUtils.isNotBlank(qoStartTime)) {
sql.append(" and data_stat_date>='" + qoStartTime + "'");
}
if (StringUtils.isNotBlank(qoEndTime)) {
sql.append(" and data_stat_date<='" + qoEndTime + "'");
}
if (StringUtils.isNotBlank(regionName)) {
sql.append(" and data_province_name='" + regionName + "'");
}
if (!codes.isEmpty()) {
sql.append(" and dst.data_code in (?1)");
params.add(codes);
}
Query query1 = em.createNativeQuery(sql.toString(),Dst.class); //原生
int i = 1;
for (Object param : params) {
query1.setParameter(i++, param);
}
@SuppressWarnings("unchecked")
List<Dst> list = (List<Dst>) query1.getResultList();
return list;
}
or
public List<Dst> getIndicatorData(String qoStartTime, String qoEndTime, String regionName, Set<String> codes) {
List<Object> params = new ArrayList<>();
StringBuilder sql = new StringBuilder("select new Dst(dst.code, dst.dateVal, dst.dataVal) from Dst dst where 1=1 ");
if(StringUtils.isNotBlank(qoStartTime)){
sql.append(" and dateVal>='"+qoStartTime+"'");
}
if(StringUtils.isNotBlank(qoEndTime)){
sql.append(" and dateVal<='"+qoEndTime+"'");
}
if(StringUtils.isNotBlank(regionName)){
sql.append(" and province='"+regionName+"'");
}
if (!codes.isEmpty()) {
sql.append(" and dst.data_code in (?1)");
params.add(codes);
}
Query query1= entityManager.createQuery(sql.toString());//非原生
int i = 1;
for (Object param : params) {
query1.setParameter(i++, param);
}
@SuppressWarnings("unchecked")
List<Dst> list = (List<Dst>) query1.getResultList();
return list;
}