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);
            }
        }
        
        
        
    }
  • 相关阅读:
    网络通信过程
    路由表转发分析实例
    随机生成MAC地址和IP地址
    zabbix监控LAMP全教程
    linux ssh利用公钥免密登陆
    如果Mysql插入字符始终乱码怎么办?
    Windows 桌面利用 Navicat等工具连接 虚拟机Mysql
    pagefile.sys 虚拟内存
    linux常用命令---------------find
    当你使用Pycharm编译程序的时候,遇到了这个问题,该怎么办?please select a valid interpreter
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4870166.html
Copyright © 2011-2022 走看看