1.条件查询,动态查询

public void conditionQuery(){
Session session=null;
try {
session=HibernateUtil.currentSession();
//准备查询条件,对第三方类进行封装
ConditionEmp cm=new ConditionEmp();
cm.setJob("教员");
cm.setSalary(1400D);
cm.setHireDateBegin(ConvertDate.strToDate("2000-11-11", "yyyy-MM-dd"));
cm.setHireDateEnd(ConvertDate.strToDate("2016-11-11", "yyyy-MM-dd")); //动态添加条件
Criteria c=session.createCriteria(Emp.class);
if(cm.getJob()!=null){
//工作选项不为空
c.add(Restrictions.ilike("job", cm.getJob(), MatchMode.ANYWHERE));
}
if(cm.getSalary()!=0){
c.add(Restrictions.gt("salary", cm.getSalary()));
}
if(cm.getHireDateBegin()!=null){
c.add(Restrictions.ge("hiredate", cm.getHireDateBegin()));
}
if(cm.getHireDateEnd()!=null){
c.add(Restrictions.le("hiredate", cm.getHireDateEnd()));
}
List<Emp> list=c.list();
for (Emp emp : list) {
System.out.println(emp.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

2.排序 分页 关联

 public void show(){
Session session=null;
try {
session=HibernateUtil.currentSession();
Criteria c=session.createCriteria(Emp.class);
// //查询工资高于某个范围,结果按照升序或者降序排列
//
// //添加条件
// List<Emp> list= c.add(Restrictions.gt("salary", 1500D)).addOrder(Order.desc("salary")).list();
//
// for (Emp emp : list) {
// System.out.println(emp.getName()+" "+emp.getSalary());
// } // //工资高于某个范畴,按照工资升序,在按照编号降序
// @SuppressWarnings("unchecked")
// List<Emp> list=c.add(Restrictions.gt("salary", 1500D)).
// addOrder(Order.asc("salary")).
// addOrder(Order.desc("id")).list();
// for (Emp emp : list) {
// System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
// } //查出工资最高的两个人
List<Emp> list=c.add(Restrictions.isNotNull("salary")).
addOrder(Order.desc("salary")).
setFirstResult(0).setMaxResults(2).list();
for (Emp emp : list) {
System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
} } catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

3.分页

 public void pageDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); Criteria c=session.createCriteria(Emp.class); //获取总记录
Integer count=(Integer) c.setProjection(Projections.rowCount()).uniqueResult();
//设置每页显示几条记录
int pageSize=4;
//计算总页数
int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1);
//清空查找总记录数时设置的投影
c.setProjection(null);
//页的索引
int pageIndex=1;
//设置从哪条记录开始,不包括输入的值
c.setFirstResult((pageIndex-1)*pageSize);
//设置查找的记录的总条数
c.setMaxResults(pageSize); List<Emp> list=c.list();
for (Emp emp : list) {
System.out.println(emp.getName());
} } catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

4.关联查询

 public void joinDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); // //查询包含指定字符的员工
// List<Emp> list=session.createCriteria(Emp.class).
// add(Restrictions.ilike("name", "王", MatchMode.ANYWHERE)).
// createCriteria("dept").add(Restrictions.eq("name", "开发部")).list();
// for (Emp emp : list) {
// System.out.println(emp.getName()+" "+emp.getDept().getName());
// } //查询工作所在地为某一部门的员工人数
List<Dept> list=session.createCriteria(Dept.class,"d").
setFetchMode("emps", FetchMode.JOIN).add(Restrictions.eq("d.name", "开发部")).list();
System.out.println(list.size());
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

5.投影

 public void projectionDemo(){
Session session=null;
try {
session=HibernateUtil.currentSession(); // //查询员工的姓名和入职时间
// List<Object[]> list=session.createCriteria(Emp.class).
// setProjection(Projections.projectionList().
// add(Property.forName("name")).
// add(Property.forName("hiredate")))
// .list();
// for (Object[] obj : list) {
// System.out.println(obj[0]+" "+obj[1]);
// // new Date(((Timestamp)obj[1]).getTimestamp());
// } // //统计各部门的平均工资、最高工资、最低工资
// List<Object[]> list=session.createCriteria(Emp.class,"e").
// createAlias("e.dept", "d").
// setProjection(Projections.projectionList().
// add(Projections.groupProperty("d.name")).
// add(Projections.avg("salary")).
// add(Projections.max("salary")).
// add(Projections.min("salary"))).list();
// for (Object[] obj : list) {
// System.out.println(obj[0]+" "+obj[1]+" "+obj[2]+" "+obj[3]);
// } //使用DetachedCriteria
DetachedCriteria dc=DetachedCriteria.forClass(Emp.class,"e")
.createAlias("e.dept", "d").add(Restrictions.eq("d.name", "人事部"))
.add(Restrictions.ilike("e.name", "王",MatchMode.ANYWHERE)); //查询数据
List<Emp> list= dc.getExecutableCriteria(session).list();
for (Emp emp : list) {
System.out.println(emp.getName()+"---"+emp.getDept().getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
}

最新文章

  1. iOS—如何申请苹果公司开发者账号流程详细图文介绍(包括邓白氏编码的申请方法详细介绍)
  2. Asp.net Core的代码移植技巧,半天将SqlSugarORM转成Core
  3. HTML5新特性之WebRTC
  4. 涨姿势:创业做一个App需要花多少钱(8个人,6个月,就要100万,附笔记心得)
  5. [C语言(VC)] 打造自己的键盘记录器 (zaroty)
  6. 使用eclipse开发webService很简单
  7. Extjs4.10Model模型具体解释
  8. 边坡优化主题5——bzoj 1096 [ZJOI2007]仓库建设 解决问题的方法
  9. jquery选择器之属性过滤选择器
  10. samba安装与配置
  11. (简单) POJ 2750 Potted Flower,环+线段树。
  12. 使用mysql索引技巧及注意事项
  13. 安装Vmware 以及 Vmware 中安装Ubuntu 以及其中问题?
  14. 为Nexus配置阿里云代理仓库【转】
  15. PHP Xdebug + PhpStorm调试远程服务器代码
  16. PRESTO安装部署和参数说明(一)
  17. Java使用foreach语句对数组成员遍历输出
  18. 八. Pandas的轴
  19. Android Studio多Module开发需要注意的问题
  20. PHP二维数组如何根据某个字段排序

热门文章

  1. Jsp通过JDBC连接到SQL Server2008数据库遇到的几个问题
  2. C程序第二章节:算法
  3. QT5-控件-QFontComboBox-字体选择下拉列表,使用一个标签查看效果
  4. 安装.net framework 4.0失败,出现HRESULT 0xc8000222错误代码
  5. jquery mobile 按钮部件(包含图标的使用)
  6. json格式初涉
  7. JS函数定义与匿名函数的调用
  8. acdream暴力专场中的优美暴力
  9. 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
  10. RAW碰到的问题与功能的测试