美文网首页程序员
Hibernate--查询

Hibernate--查询

作者: 常威爆打来福 | 来源:发表于2017-09-24 22:21 被阅读0次

    一 Query
    1 使用Query对象,不需要写sql语句,但是写hql语句
    (1)hql:hibernate query language,hibernate提供查询语句,这个hql语句和普通sql语句很相似
    (2)hql和sql语句区别:

    • 使用sql语句操作表和字段
    • 使用hql操作实体类和属性

    2 查询所有hql语句

    form 实体类名称

    3 Query对象使用
    (1)创建Query对象

                //1 创建Query对象
                Query query= session.createQuery("from entity.User");
    

    (2)调用Query对象里面的方法得到结果

                //2 调用query对象里面的方法得到结果
                List<User> list = query.list();
                for (User user :list){
                    System.out.println(user);
                }
    
    

    HibernateQuery.java

    import Utils.HibernateUtils;
    import entity.User;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.junit.Test;
    
    import java.util.List;
    
    public class HibernateQuery {
        @Test
        public void QueryText(){
            Transaction tx =null;
            try {
               Session session= HibernateUtils.getSessionObject();
                tx = session.beginTransaction();
                //1 创建Query对象
                Query query= session.createQuery("from entity.User");
                //2 调用query对象里面的方法得到结果
                List<User> list = query.list();
                for (User user :list){
                    System.out.println(user);
                }
    
                tx.commit();
            }catch (Exception e){
                e.printStackTrace();
                tx.rollback();
            }finally {
    
            }
        }
    }
    
    
    结果显示

    二 Criteria
    1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
    2 实现过程
    (1)创建Criteria

                //1 创建Criteria
                 Criteria criteria= session.createCriteria(User.class);
    

    (2)调用对象里面的方法得到结果

                //2 调用对象里面的方法得到结果
                List<User> list= criteria.list();
                for (User user:list){
                    System.out.println(user);
                }
    

    HibernateQuery.java

     public void CriteriaText() {
            Transaction tx = null;
            try {
               Session session= HibernateUtils.getSessionObject();
               tx= session.beginTransaction();
                //1 创建Criteria
                 Criteria criteria= session.createCriteria(User.class);
                //2 调用对象里面的方法得到结果
                List<User> list= criteria.list();
                for (User user:list){
                    System.out.println(user);
                }
               tx.commit();
            }catch (Exception e){
                e.printStackTrace();
                tx.rollback();
            }
        }
    
    
    结果显示

    三 SQLQuery
    1 使用hibernate时候,调用底层sql实现
    2 实现过程
    (1)创建对象

                //1.创建对象
              SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");
    

    (2)调用对象的方法得到结果

                //2.调用方法得到结果
                 List<Object[]> list= sqlQuery.list();
                 for (Object[] objects:list){
                     System.out.println(Arrays.toString(objects));
                 }
    
    返回数组

    问题:返回的list集合每部分都是数组
    解决:让返回list中每部分是对象形式

                //设置数据返回到哪个实体类
                sqlQuery.addEntity(User.class);
    

    HibernateQuery.java

    import Utils.HibernateUtils;
    import entity.User;
    import org.hibernate.*;
    import org.junit.Test;
    
    import java.lang.reflect.Array;
    import java.util.Arrays;
    import java.util.List;
    
    public class HibernateQuery {
        @Test
        public void QueryText(){
            Transaction tx =null;
            try {
               Session session= HibernateUtils.getSessionObject();
                tx = session.beginTransaction();
                //1 创建Query对象
                Query query= session.createQuery("from entity.User");
                //2 调用query对象里面的方法得到结果
                List<User> list = query.list();
                for (User user :list){
                    System.out.println(user);
                }
    
                tx.commit();
            }catch (Exception e){
                e.printStackTrace();
                tx.rollback();
            }
        }
    
        @Test
        public void CriteriaText() {
            Transaction tx = null;
            try {
               Session session= HibernateUtils.getSessionObject();
               tx= session.beginTransaction();
                //1 创建Criteria
                 Criteria criteria= session.createCriteria(User.class);
                //2 调用对象里面的方法得到结果
                List<User> list= criteria.list();
                for (User user:list){
                    System.out.println(user);
                }
               tx.commit();
            }catch (Exception e){
                e.printStackTrace();
                tx.rollback();
            }
        }
        @Test
        public  void SQLQueryText(){
            Transaction tx =null;
            try {
               Session session = HibernateUtils.getSessionObject();
               tx = session.beginTransaction();
                //1.创建对象
              SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");
              //返回的list中每部分是对象形式
                //设置数据返回到哪个实体类
                sqlQuery.addEntity(User.class);
              //2.调用方法得到结果
               List<User> list= sqlQuery.list();
               for (User user:list){
                   System.out.println(user);
               }
    
    /*            //2.调用方法得到结果
                 List<Object[]> list= sqlQuery.list();
                 for (Object[] objects:list){
                     System.out.println(Arrays.toString(objects));
                 }*/
               tx.rollback();
            }catch (Exception e){
                e.printStackTrace();
                tx.rollback();
            }
        }
    }
    
    
    执行结果

    相关文章

      网友评论

        本文标题:Hibernate--查询

        本文链接:https://www.haomeiwen.com/subject/nhhlextx.html