java.util.List findAllByPropertys(java.lang.Class cls, java.util.Map<java.lang.String,java.lang.Object[]> params, java.lang.String[] orders, int startindex, int count)
根据指定的PO类、多个查询条件、排序字段及开始位置、查询总数量来获取po对象列表.
参数:
cls
- PO类
params
- haspMap对象,多个参数,格式为<列名,列值(可以多个,或的关系)>
orders
- 排序字段,(new String[]{"sortcode"})
startindex
- 开始位置,查询全部,填写为-1
count
- 查询总数 ,查询全部,填写为-1
返回:
返回po对象集合
public List findAllByPropertys(final Class cls, final Map<String,Object[]> params,final String[] orders,final int startindex,final int count) {
String querystr = "from " + cls.getName();
//处理列
if(params!=null && params.size()>0){
querystr += " where 1=1 ";
for(String columnName : params.keySet()){
if(StringUtils.isNotBlank(columnName)){
querystr += " and "+columnName+" in (:"+columnName+"Values)";
}
}
}
//处理排序
if(orders!=null && orders.length>0){
querystr += " order by ";
for(int i=0; i<orders.length; i++){
if(i>0){
querystr += ",";
}
querystr += orders[i];
}
}
Query q = sessionFactory.getCurrentSession().createQuery(querystr);
if(params!=null && params.size()>0){
for(String columnName : params.keySet()){
if(StringUtils.isNotBlank(columnName)){
q.setParameterList(columnName+"Values", params.get(columnName));
}
}
}
//处理显示数量
if(startindex>=0 && count>=0){
q.setFirstResult(startindex);
q.setMaxResults(count);
}
return q.list();
}