Hibernate查询方式

1.对象查询导航

2.OID查询

3.hql查询

4.QBC查询

5.本地sql查询



1.对象查询导航 范例

//根据id查询某个客户,再查询这个客户里面的所有联系人
Customer customer = session.get(Customer.class,1);

Set<LinkMan> linkman = customer.getSetLinkMan();


2.OID查询

//根据id查询某一条记录,返回对象

User user = session.get(User.class,1);


3.hql查询

//Query对象,写hql语句实现查询,hql语句和普通sql语句相似,但sql操作数据库表和字段,但hql操作实体类和属性

(1)查询所有

Query query = session.createQuery("from User");

List<User> list = query.list();

(2)条件查询

hql条件查询语法:(1)from 实体类名称 where 实体类属性 = ? and 实体类属性 = ?

Query query = ssession.createQuery("from User where name=? and Pwd=?");

//向?设置值 setParameter(int类型 ?位置,具体参数值)位置从0开始

query.setParameter(0,"123");

query.setParameter(1,"zhangsan");

List<User> list = query.list();

模糊查询

Query query = session.createQuery("from User c where c.name like ?");

query.setParameter(0,"%浪%");

List<User> list = query.list();

(3)排序查询

·语法:from 实体类名称 order by 属性名称 asc/desc

Query query = session.createQuery("from User order by id asc");

(4)分页查询

注意:hql操作语句中不能写limit,hibernate的Query对象封装了两个方法的实现

Query query = session.createQuery("from User");

query.setFirstResult(0);//设置开始位置

query.setMaxResult(3);

List<User> list = query.list();

(5)投影查询(查询部分字段)

select 实体类属性名称1,属性名称2 from 实体类名称

select 后面不能写 *,不支持

Query query  = session.createQuery("select name from User");

List<User> list = querey.list();

(6)常用聚合函数:count、sum、avg、max、min

Query query = session.createQuery("select count(*) from User");

Object obj = query.uniqueResult();

Long lobj = (Long)obj;

int count = lobj.intValue();


4.QBC查询

QBC不需要查询语句,使用方法实现,QBC操作实体类和属性,使用Criteria对象实现

(1)查询所有:Criteria criteria = session.createCriteria(User.class);

List<User> list = criteria.list();

(2)条件查询

Criteria criteria = session.createCriteria(User.class);

criteria.add(Restrictions.eq("id",1));//类似于id=?

List<User> list = criteria.list();

(3)模糊查询

criteria.add(Restriction.like("name","%百%"));

(4)排序查询

设置对哪个属性进行排序,设置排序规则

criteria.addOrder(Order.asc("id"));

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容