java j2ee ssh项目中使用hibernate的分页条件查询问题
就是在daoimpl里面写查询的时候查询方法的结构怎么才是最优美的参数一般就是传个PageModel对象(里面有pagesize,pagenum,orderSort,or...
就是在daoimpl里面写查询的时候
查询方法的结构 怎么才是最优美的
参数一般就是传个PageModel对象 (里面有pagesize,pagenum,orderSort,orderWord)
然后一大堆查询条件name,id,age,date等等
我感觉参数太多
还有就是用hql 的时候 先new 一个stringbuffer 然后判断每个条件是不是空 不是就拼字符串 完了再创建Query对象把hql 传进去 再判断每个条件是否为空 这次是为了给Query里的?号设置值 (不使用拼接是为了防止注入)
感觉这样很麻烦 有没有好点的方法
然后再就是 每次dao的时候很多代码重复 比如创建session trancation等等
怎么样封装会好点 求有经验的人指点一下 展开
查询方法的结构 怎么才是最优美的
参数一般就是传个PageModel对象 (里面有pagesize,pagenum,orderSort,orderWord)
然后一大堆查询条件name,id,age,date等等
我感觉参数太多
还有就是用hql 的时候 先new 一个stringbuffer 然后判断每个条件是不是空 不是就拼字符串 完了再创建Query对象把hql 传进去 再判断每个条件是否为空 这次是为了给Query里的?号设置值 (不使用拼接是为了防止注入)
感觉这样很麻烦 有没有好点的方法
然后再就是 每次dao的时候很多代码重复 比如创建session trancation等等
怎么样封装会好点 求有经验的人指点一下 展开
2个回答
展开全部
拼接sql不能省去。
我做分页的时候也没用到PageModel,mysql的sql语句中有limit关键字,用于查询数量的限制,其他的数据库中应该也有类似的关键字。
"然后再就是 每次dao的时候很多代码重复 比如创建session trancation"
查询多条记录可以:
protected List queryMoreResults(Query query, List<Object> paramsList, Integer begin, Integer size) throws DataAccessException{
if(paramsList!=null && paramsList.size()>0){
for(int i=0;i<paramsList.size();i++){
query.setParameter(i, paramsList.get(i));
}
}
if(begin!=null && size!=null){
query.setFirstResult(begin).setMaxResults(size);
}
return query.list();
}
我做分页的时候也没用到PageModel,mysql的sql语句中有limit关键字,用于查询数量的限制,其他的数据库中应该也有类似的关键字。
"然后再就是 每次dao的时候很多代码重复 比如创建session trancation"
查询多条记录可以:
protected List queryMoreResults(Query query, List<Object> paramsList, Integer begin, Integer size) throws DataAccessException{
if(paramsList!=null && paramsList.size()>0){
for(int i=0;i<paramsList.size();i++){
query.setParameter(i, paramsList.get(i));
}
}
if(begin!=null && size!=null){
query.setFirstResult(begin).setMaxResults(size);
}
return query.list();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询