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);
            }
        }
        
        
        
    }
  • 相关阅读:
    FLEX 几何学
    tcpip协议详解二知识进阶
    打造模块化的Flex应用
    java网络编程知识整理
    ActionScript实现数组快速去重算法
    Adobe Flex迷你教程 — CursorManager使用
    TCP连接中的TIME_WAIT状态二
    TCP连接中的TIME_WAIT状态
    flex 帮助文档制作(HTML)
    Intellij IDEA下flex国际化配置
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4870166.html
Copyright © 2011-2022 走看看