Hibernate原生SQL语句查询
import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; public class TestSql { @Test public void selectAll() { Session session=HibernateUitels.getSession(); Transaction tx = session.beginTransaction(); String sql="select * from student"; //创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); //调用方法查询结果 /* List<Object[]> list = query.list(); for(int i=0;i<list.size();i++) { System.out.println(Arrays.toString(list.get(i))); }*/ //指定结果集封装到那个对象中 query.addEntity(Student.class); //调用方法查询结果 List<Student> list = query.list(); System.out.println(list); tx.commit(); session.close(); }
2、使用setParameter(index,param)设置参数;
@Test public void get() { Session session=HibernateUitels.getSession(); Transaction tx = session.beginTransaction(); //书写sql语句 String sql="select * from student where id=?"; //创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); //给第一个问号设置参数 query.setParameter(0,19); //调用方法查询结果 List<Student> list = query.list(); System.out.println(list); tx.commit(); session.close(); }
3、mysql 中 limit 和 oracle 中 rownum
@Test public void testRowNum() { Session session=HibernateUitels.opensession(); Transaction tx = session.beginTransaction(); String sql="select * from ( select rownum r,a.* from table a where rownum <= ? ) where r >= ?;"; SQLQuery query = session.createSQLQuery(sql); query.addEntity(Student.class); query.setParameter(0,10); query.setParameter(1,5); List<Student> list = query.list(); System.out.println(list); tx.commit(); session.close(); } }
在mysql中的sql语句:select * from table limit 0,10; 换成Oracle 换成 rownum