Hibernate---SQL原生态查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IUNIQUE/article/details/63253521

一、获取Session对象

//读取配置文件,创建Configuration
Configuration congiguration = new Configuration().configure();
//解析映射文件,创建SessionFactory
SessionFactory sf = configuration.buildSessionFactory();
//打开Session
Session session = sf.openSession();
//开启事务
Transaction tran = session.beginTransaction();
//接下来进行持久化操作

二、还是以Oracle中的Dept和Emp为例:

//查询指定工作Job和包含E字母的员工编号和姓名(使用addEntity()将Emp集映射成对象)
String sql = "select e.empno,e.ename from emp e where e.job=:job and e.ename like :ename ";
List<Object[]> list = session.createSQLQuery(sql).setString("job","SALESMAN").setString("ename","%E%").list();
for(Object[] obj:list){
    System.out.println(obj[0]+"....."+obj[1]);
}

//查询指定职位的员工,并打印员工姓名和所在部门名称
String sql = "select e.*,d.* from emp inner join dept on e.deptno = d.deptno and e.job = :job";
List<Object[]> list = session.createSQLQuery(sql).addEntity("e",Emp.class).addJoin("d","e.dept").setString("job","SALESMAN");
for (Object[] objects : list) {
    Emp emp = (Emp) objects[0];
    Dept dept = (Dept) objects[1];
    System.out.println(emp.getEname() +"....."+dept.getDname());
}
tran.commit();

猜你喜欢

转载自blog.csdn.net/IUNIQUE/article/details/63253521