多对多(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.转型输出结果
导航查询
查询某个对象对应下的所有联系对象,使用对象导航实现
//查询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.转型输出结果