Hibernate查询方式(many to many)

来源:互联网 发布:吹笛子软件下载 编辑:程序博客网 时间:2024/06/05 03:23
多对多(many to many)


导航查询
查询某个对象对应下的所有联系对象,使用对象导航实现
//查询cid=1客户,再查询这个客户里面所有联系人
Customer customer =session.get(Customer.class , 1);
//再查询这个客户里面所有联系人
//直接得到客户里面联系人的set集合
Set<LinkMan> linkman=customer.getSetLinkMan();
HQL查询
查询所有
1.查询表中所有记录
 (1)创建Query对象,写hql语句
(2)调用Query对象里面的方法得到结果
2.查询所有: from 实体类名称
//1 创建Query对象
Query query =session.creatQuery(“from Customer”);
//2 调用方法得到结果
List<Customer> list=query.list();


条件查询
1.hql语句查询表中记录
 (1) from 实体类名称 Where 实体类属性名=? and 实体类属性名=?
       from 实体类名称 where 实体类属性名 like ?
2.条件查询: from 实体类名称 
//1 创建Query对象
Query query =session.creatQuery(“from Customer c where c.custName like ?”);
//2 设置?的值
// %浪% 模糊查询   ? 从 0开始
query.setParameter(0, %浪%);
List<Customer> list=query.list();




排序查询
1.hql排序语句写法
(1)from 实体类名称 order by 实体类属性名称 asc/desc
 


分页查询
1.hql语句
(1)查询表所有
      from 实体类名称 
(2)设置开始位置
      query.setFirstResult( );
(3)设置每页记录数
 query.setMaxResult( );
 




投影查询
1.投影查询,查询不是所有字段而是部分字段
例如: select cid,custName from Customer
 




聚集函数查询
1.常用聚集函数
count,sum,avg,max,min
2.hql语句写法
(1)查询表记录数
-select count(*) from 实体类名称
//Object直接返回对象形式uniqueResult
 
//obj是Long类型,不能直接转成Integer类型
int iobj=(int)obj;
System.out.println(iobj);
 
//需要先Long之后,用intValue()
 






QBC查询
1 使用hql查询需要写hql语句,但是使用qbc时候,不需要写语句了,使用方法实现


2 使用qbc时候,操作实体类和属性


3 使用qbc,使用Criteria对象实现






查询所有
1.创建Criteria对象
2.调用方法得到结果


 
条件查询
1.创建Criteria对象
2.调用add方法设置条件值
2.1  Restrictions.eq按条件查询
 
2.2   Restrictions.like模糊查询
 
排序查询
1.创建Criteria对象
2.调用方法addOrder(Order.desc(“?”));
 
分页查询
1.创建Criteria对象
2.方法同HQL语句
2.1 criteria.setFirstResult(?);   ?:设置开始位置
2.2 criteria.setMaxResult(?);    ?:设置每页记录数
开始位置计算公式:(当前页-1)* 每页记录数
统计查询
1.创建Criteria对象
2.调用criteria.setProjection(Projections.rowCount());
3.获取唯一值criteria.uniqueResult();
4.转型输出结果
 
原创粉丝点击