HQL查询
2015-12-02 20:29
260 查看
HQL ,Hibernate Query Language ,是Hibernate查询语言,不直接操作数据表,而是操作实体类,根据实体类和对应数据表中的映射关系,查找数据。
下面是hql的基本步骤:
1.获取session
session=new Configuration().configure().buildSessionFactory().openSession();
2.构建hql语句
String hql="from Dept ";
3.得到query对象
Query query=session.createQuery(hql);
4.得到查到的结果
List<Dept> list=query.list();
或者
Iterator<Dept> it=query.iterate();
下面是几个hql例子
①职位是店员,如:job='CLERK'
工资大于1000元,如:salary>1000
入职时间在1981年4月1日至1985年9月9日之间
② hql分页
下面是hql的基本步骤:
1.获取session
session=new Configuration().configure().buildSessionFactory().openSession();
2.构建hql语句
String hql="from Dept ";
3.得到query对象
Query query=session.createQuery(hql);
4.得到查到的结果
List<Dept> list=query.list();
或者
Iterator<Dept> it=query.iterate();
下面是几个hql例子
①职位是店员,如:job='CLERK'
工资大于1000元,如:salary>1000
入职时间在1981年4月1日至1985年9月9日之间
public void SearchCondition(){ /** * 职位是店员,如:job='CLERK' * 工资大于1000元,如:salary>1000 * 入职时间在1981年4月1日至1985年9月9日之间 */ Session session=null; try { session=new Configuration().configure(). buildSessionFactory().openSession(); //1.通过辅助类对象统一处理命名参数 //创建辅助类的对象 ConditionEmp cm=new ConditionEmp(); cm.setJob("CLERK"); cm.setSalary(566666); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); cm.setHireDateBegin(sdf.parse("2000-10-27")); cm.setHireDateEnd(sdf.parse("2003-12-12")); StringBuilder hql=new StringBuilder("from Emp as emp where 1=1"); //上面的数据有的有,有的木有 if(null!=cm.getJob()){ //工作不是空的 hql.append(" and emp.job=:job"); } if(0!=cm.getSalary()){ hql.append(" and emp.salary>:salary"); } if(null!=cm.getHireDateBegin()){ hql.append(" and emp.hiredate>:hireDateBegin"); } if(null!=cm.getHireDateEnd()){ hql.append(" and emp.hiredate<:hireDateEnd"); } Query query=session.createQuery(hql.toString()); //处理命名参数 query.setProperties(cm); List<Emp> list=query.list(); for (Emp emp : list) { System.out.println(emp.getEmpno()); System.out.println(emp.getEmpname()); } } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } }
② hql分页
public void pageDemo(){ Session session=null; try { session=new Configuration().configure(). buildSessionFactory().openSession(); String hql="from Emp order by empno"; Query query=session.createQuery(hql); //每页显示几条数据 int pageSize=2; //计算总记录(总条数) String countHql="select count(*) from Emp"; //接收数字 int count=((Long)session.createQuery(countHql).uniqueResult()).intValue(); //计算总页数 int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); //页号 int pageIndex =1; //设置每页显示的最大记录数字 query.setMaxResults(pageSize); //设置从第几条开始输出,不包括该条 query.setFirstResult((pageIndex-1)*pageSize); List<Emp> list=query.list(); System.out.println("总页数是:"+totalPage); for (Emp emp : list) { System.out.println(emp.getEmpno()); System.out.println(emp.getEmpname()); } } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } }
相关文章推荐
- linux 软件卸载
- poj 2151 Check the difficulty of problems 概率dp
- 畅通工程
- Codeforces Round #334 (Div. 2)
- 1.14 session的删改
- leetcode-55 Jump Game 最远距离问题
- 天津占座
- CodeForces 602C__The Two Routes
- 商务通传递中文及样式
- UI基础整理-7
- 哔哩哔哩真实视频地址解析-初探
- Mysql记录集锦
- 多空对比:一个实用的短中长期资金观察指标介绍
- 网络协议学习笔记-数据链路层-MTU、路径MTU和串行线路吞吐量计算
- Linux里类似批处理中的pause命令
- (十三)break 命令
- MFC中定时器的使用
- 【HDU 2037】今年暑假不AC
- asp.net获取客户端浏览器及主机信息
- 上线发布系统