单表查询(HQL hibernate Query Language)
- 查询所有的数据
Query query = session.createQuery("from User");
List<User> list = query.list();
- 排序查询
Query query = session.createQuery("from User order by user_id");
List<User> list = query.list();
- 条件查询
Query query = session.createQuery("from User where user_name=?");
query.setParameter(0,"sofency");
List<User> list = query.list();
- 分页查询(MySQL)
Query query = session.createQuery("from User");
query.setFirstResult(0);
query.setMaxResults(2);
List<User> list = query.list();
- 投影查询 查询部分字段
Query query = session.createQuery("select user_id,user_name from User");
List<Object[]> list = query.list();
- 聚集函数查询(count(*) max() min(),avg())
Query query = session.createQuery("select count(*) from User");
Object obj = query.uniqueResult();
Long lobj = (Long) obj;
int count = (int) lobj;
Query query = session.createQuery("select max(user_age) from User");
List<User> list = query.list();
多表查询(HQL)
- 内连接
Query query = session.createQuery("from User u inner join u.setRole");
List<Object[]> list = query.list();
- 迫切内连接
Query query = session.createQuery("from User u inner join fetch u.setRole");
List<User> list = query.list();
- 左外连接
Query query = session.createQuery("from User u left outer join u.setRole");
List<Object[]> list = query.list();
- 迫切左外连接
Query query = session.createQuery("from User u left outer join fetch u.setRole");
List<User> list = query.list();
单表查询(QBC Query By Criteria)
- 查询所有
Criteria criteria = session.createCriteria(User.class);
List<User> list = criteria.list();
- 条件查询
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("user_id",3)).add(Restrictions.eq("user_name","sofency"));
List<User> list = criteria.list();
- 排序查询
Criteria criteria = session.createCriteria(User.class);
criteria.addOrder(Order.desc("user_id"));
List<User> list = criteria.list();
- 分页查询
Criteria criteria = session.createCriteria(User.class);
criteria.setFirstResult(0);
criteria.setMaxResults(2);
List<User> list = criteria.list();
- 聚集函数查询 (插叙记录数)
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;
- 多表查询
Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(Projections.rowCount()).add(Restrictions.eq("Role_desc","普通员工"));