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());
}
}
}
}
}