zoukankan      html  css  js  c++  java
  • 15、Hibernate的原生sql查询,优化Hibernate的查询效率

    public class TestSQL {
        
        @Test
        public void test01() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                List<Student> stus = session.createSQLQuery("select * from t_stu where name like ?")
                        .addEntity(Student.class)
                        .setParameter(0, "%孔%")    
                        .setFirstResult(0).setMaxResults(10)
                        .list();
                for(Student stu:stus) {
                    System.out.println(stu.getName());
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                HibernateUtil.close(session);
            }
        }
        
        @Test
        public void test02() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                List<Object[]> stus = session.createSQLQuery("select {stu.*},{cla.*},{spe.*} from " +
                        "t_stu stu left join t_classroom cla on(stu.cid=cla.id) " +
                        "left join t_special spe on(spe.id=cla.spe_id) where stu.name like ?")
                        .addEntity("stu",Student.class)
                        .addEntity("cla",Classroom.class)
                        .addEntity("spe",Special.class)
                        .setParameter(0, "%孔%")    
                        .setFirstResult(0).setMaxResults(10)
                        .list();
                Student stu = null;
                Classroom cla = null;
                Special spe = null;
                List<StuDto> list = new ArrayList<StuDto>();
                for(Object[] obj:stus) {
                    stu = (Student)obj[0];
                    cla = (Classroom)obj[1];
                    spe = (Special)obj[2];
                    list.add(new StuDto(stu, cla, spe));
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                HibernateUtil.close(session);
            }
        }
        
        @Test
        public void test03() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                List<StudentDto> stus = session.createSQLQuery("select stu.id as sid,stu.name as sname," +
                        "stu.sex as sex,cla.name as cname,spe.name as spename from " +
                        "t_stu stu left join t_classroom cla on(stu.cid=cla.id) " +
                        "left join t_special spe on(spe.id=cla.spe_id) where stu.name like ?")
                        .setResultTransformer(Transformers.aliasToBean(StudentDto.class))
                        .setParameter(0, "%孔%")    
                        .setFirstResult(0).setMaxResults(10)
                        .list();
                for(StudentDto sd:stus) {
                    System.out.println(sd);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                HibernateUtil.close(session);
            }
        }
        
        
        
    }
  • 相关阅读:
    获取文件夹下的所有文件名,并修改某些文件名 Alec
    生成XML文件,并保存到本地文件 Alec
    按Enter键起到Tab键的效果 Alec
    网站底部浮动js Alec
    NET Framework4.0注册 Alec
    从FTP上下载文件到本地 Alec
    生成txt日志操作文件 Alec
    不使用第三个变量,实现两个变量值的交换 Alec
    生成指定位数的回文素数 Alec
    单击gridview某一列弹出详细信息 Alec
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4870166.html
Copyright © 2011-2022 走看看