public PageData getPageData(String sql, Integer page, Integer pageSize,Map<String,Object> paramMap, Class resultClass) {
NativeQuery countQuery = getSession().createNativeQuery("select count(*) from (" + sql + ")tmp");
NativeQuery nativeQuery = getSession().createNativeQuery(sql);
for(Entry<String, Object> entry : paramMap.entrySet()) {
Object val=entry.getValue();
countQuery.setParameter(entry.getKey(), val);
nativeQuery.setParameter(entry.getKey(), val);
}
int count = ((BigInteger) countQuery.uniqueResult()).intValue();
if (count == 0) {
return new PageData<T>(page, 0, pageSize, new ArrayList<T>());
}
nativeQuery.setFirstResult((page - 1) * pageSize);
nativeQuery.setMaxResults(pageSize);
nativeQuery.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(resultClass));
return new PageData<>(page, count, pageSize, nativeQuery.list());
}
public List list(String sql, Map<String,Object> paramMap, Class resultClass) {
NativeQuery nativeQuery = getSession().createNativeQuery(sql);
for(Entry<String, Object> entry : paramMap.entrySet()) {
Object val=entry.getValue();
nativeQuery.setParameter(entry.getKey(), val);
}
if(Objects.isNull(resultClass)){
return nativeQuery.list();
}
nativeQuery.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(resultClass));
return nativeQuery.list();
}