hibernate的查询数据方式之HQL和QBC

单表查询(HQL hibernate Query Language)

  1. 查询所有的数据
Query query = session.createQuery("from User");//from 实体类
List<User> list = query.list();
  1. 排序查询
Query query = session.createQuery("from User order by user_id");
List<User> list = query.list();
  1. 条件查询
Query query = session.createQuery("from User where user_name=?");
query.setParameter(0,"sofency");
List<User> list = query.list();
  1. 分页查询(MySQL)
Query query = session.createQuery("from User");
//设置开始位置
query.setFirstResult(0);
query.setMaxResults(2);//每页最多两条数据
List<User> list = query.list();
  1. 投影查询 查询部分字段
Query query = session.createQuery("select user_id,user_name from User");//返回的是数组形式
List<Object[]> list = query.list();
  1. 聚集函数查询(count(*) max() min(),avg())
Query query = session.createQuery("select count(*) from User");//查询记录数
Object obj = query.uniqueResult();//对象不能直接转换到int类型
Long lobj = (Long) obj;
int  count = (int) lobj;
Query query = session.createQuery("select max(user_age) from User");//查询最大年纪的员工。
List<User> list = query.list();

多表查询(HQL)

  1. 内连接
Query query = session.createQuery("from User u inner join u.setRole");//User 表和Role表 User是实体类的名字不是表名
//返回的是以数组的形式   数组元素的类型是对象[User,Role]
List<Object[]> list = query.list();
  1. 迫切内连接
Query query = session.createQuery("from User u inner join fetch u.setRole");
List<User> list = query.list();
//返回的是User对象
  1. 左外连接
Query query = session.createQuery("from User u left outer join u.setRole");
List<Object[]> list = query.list();
//返回的是数组  数组的元素是对象  右外连接 right outer join
  1. 迫切左外连接
Query query = session.createQuery("from User u left outer join fetch u.setRole");
List<User> list = query.list();
//返回的是对象(User)

单表查询(QBC Query By Criteria)

  1. 查询所有
Criteria criteria = session.createCriteria(User.class);
List<User> list = criteria.list();
  1. 条件查询
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("user_id",3)).add(Restrictions.eq("user_name","sofency"));//添加约束条件
List<User> list = criteria.list();
  1. 排序查询
Criteria criteria = session.createCriteria(User.class);
criteria.addOrder(Order.desc("user_id"));//生x
List<User> list = criteria.list();
  1. 分页查询
Criteria criteria = session.createCriteria(User.class);
criteria.setFirstResult(0);
criteria.setMaxResults(2);//每页最多两条数据
List<User> list = criteria.list();
  1. 聚集函数查询 (插叙记录数)
Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(Projections.rowCount());
//最大年纪
criteria.setProjection(Projections.max(user_age));
//最小
criteria.setProjection(Projections.min(user_age));
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = (int) lobj;
  1. 多表查询
Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(Projections.rowCount()).add(Restrictions.eq("Role_desc","普通员工"));//查询身份普通员工的个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值