您的位置:首页 > 其它

HQL 参数绑定、唯一结果、分页、投影总结(上)

2014-12-01 17:21 169 查看
我们先总结一下HQL语句常用语法:


from子句:;

select子句:用于选取对象和属性;

where子句:用于表达查询语句的限制条件;

使用表达式:一般用在where子句中;

order by子句:用于排序;


 下面根据我的某个项目的一张表进行总结才学习的HQL查询: 

  1、准备数据:

   数据库(Oracle):

/**
* 动态查询dvd列表
* @param dvd
* @return
*/
public List<DVDEntity> getDvdByHiber(DVDEntity dvd){
List<DVDEntity> list=new ArrayList<DVDEntity>();
//hql
StringBuffer hql=new StringBuffer("from DVDEntity where 1=1");
try {
conf=new Configuration().configure();
factory=conf.buildSessionFactory();
session=factory.openSession();
query=session.createQuery(appendHql(dvd,hql).toString());
//指定dvd对象
query.setProperties(dvd);
list=query.list();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{

session.close();
}

return list;

}
/**
* 拼接hql
* @param dvd
* @param hql
* @return
*/
private StringBuffer appendHql(DVDEntity dvd,StringBuffer hql){
if(dvd.getName()!=null){
hql.append(" and name like :name");

}if(dvd.getIntro()!=null){
hql.append(" and intro like :intro");

}if(dvd.getStar()!=null){
hql.append(" and star like :star");

}if(dvd.getPrice()!=null){
hql.append(" and price between :starPrice and :endPrice");

}if(dvd.getTypeId()!=null){
hql.append(" and typeid=:typeid");

}
if(dvd.getNum()!=null){
if(dvd.getNum()>0){
hql.append(" order by num desc");

}

}
return hql;

}


View Code
    经验总结:

      暂无

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: