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

   分页查询:

posted @ 2019-04-11 18:32  小张candy  阅读(678)  评论(0编辑  收藏  举报