hibernate之HQL,Criteria与SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate之HQL,Criteria与SQL相关的知识,希望对你有一定的参考价值。

HQL是针对封装好的对象。

HQL :hibernate自己用的sql语句   -------HQL不能出现表中的任何内容 ---------不经常使用开发中

  基本查询:String hql = "from com.sikiedu.domain.User";

Query query = session.createQuery(hql);
List<User> list = query.list();//查询所有
User user = (User) query.uniqueResult();//查询唯一数据

  条件查询:

             基本条件查询:hql = "from com.sikiedu.domain.User where  id = 1";

             ?占位符查询: hql = "from com.sikiedu.domain.User where  id = ?0 ?1 ?2"

                                      Query query = session.createQuery(hql);

                                       设置参数

                                       query.setParameter(0,id);query.setString(0,id)

             命名占位符查询:hql = "from com.sikiedu.domain.User where id = :id"

                                          query.setParameter("id",value(传参id))

   分页查询:limit ?,?

                    hql = "from com.sikiedu.domain.User" 

                     Query query = session.createQuery(hql);

                      query.setFirstResultd(0);    //设置起始索引

                      query.setMaxResults(1);    //设置最大索引

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

Criteria : 

   基本查询:CriteriaBuilder  criteriaBuilder = session.getCriteriaBuilder(); //得到CriteraBuilder 对象

                     CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);//查询                           条件(首先知道查询什么类型数据)

                     Root<User> root= createQuery.from(User.class);//从User中查询

                      createQuery.select(root)//

                      List<User> resultList = session.cresteQuery(createQuery).getResultList();//执行查询

   条件查询:createQuery.select(root).where(root.get("id").in("1"))//条件查询,得到id==1的对象

   分页查询: 

   查询总记录数:CriteriaQuery<Long> criteria= criteriaBuilder.createQuery(Long.class);

                             Root<User> root= criteria.from(User.class);

                             criteria.select(criteriaBuilder.count(root));//criteriaBuilder.可以查询各种数

                             Long count =  session.createQuery(criteria).uniqueResult();

                       criteriaBuilder查询记录数:               技术图片

 

sql

   基本查询:

String sql = "";

NativeQuery query= session.createSQLQuery(sql);//创建sql查询表
query.addEntity(User.class);//自动封装成User对象数据
List<User> list = query.list();
System.out.println(list);

   条件查询: 给?赋值

                     query.setParameter(1,"3");//从1开始从hinernate5.x

   分页查询:

以上是关于hibernate之HQL,Criteria与SQL的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate HQL,Criteria和SQL

Hibernate使用HQL,Criteria和Native SQL查询,哪个好?

Hibernate:Criteria 和 HQL 的映射行为之间的区别

hibernate框架学习笔记7:HQL查询Criteria查询

java之hibernate之hibernate查询

grails的criteria和hql查询