package com.lc.nativesql.dao; import java.sql.SQLException; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.Session; import org.junit.Test; import com.lc.demo.hibernate.HibernateSessionFactory; public class DemoDAO { @Test public void query() throws SQLException { Session session = HibernateSessionFactory.getSession();Method one
/**method one * 用這個方法能夠直接把list集合中的對象直接轉換爲實體Bean,須要映射文件的存在 */ //原生態sql語句 // String sql = "select {p.*} from person_demo p"; /* String sql = "select p.age,p.name from person_demo p"; List<Demo> ls = session.createSQLQuery(sql).addEntity("p",Demo.class).list();*/ /** * Hibernate Version 4.17 */ /*String sql = "select * from person_demo"; List<Demo> ls = session.createSQLQuery(sql).addEntity(Demo.class).list();*/ /* if(ls.size()!=0) { for(int i=0;i<ls.size();i++) { Demo demo = (Demo)ls.get(i); System.out.println(demo.getName()); System.out.println(demo.getAge()); } }*/Method two
/** * method two * hibernate3.2以上能夠對原生sql查詢使用ResultTransformer。 * 這會返回不受Hibernate管理的實體。 * 不須要映射文件的 * */ /* List<Demo> ls = session.createSQLQuery("select * from person_demo") .setResultTransformer(Transformers.aliasToBean(Demo.class)).list(); if(ls.size()!=0) { for(int i=0;i<ls.size();i++) { Demo demo = (Demo)ls.get(i); System.out.println(demo.getName()); System.out.println(demo.getAge()); } }*/Method three
/** * method three * 不須要映射文件 * 此處的name和age是表中的字段名稱 */ String sql = "select * from person_demo "; List ls = session.createSQLQuery(sql).addScalar("name") .addScalar("age").list(); if(ls.size()!=0) { for(int i=0;i<ls.size();i++) { Object[] obj = (Object[])ls.get(i); for(int j=0;j<obj.length;j++) { System.out.println(obj[j].toString()); } } }
} }