本文共 5429 字,大约阅读时间需要 18 分钟。
SqlQuery:在hibernate中使用sql
Query query=session.createQuery(HQL); SQLQuery query=session.createSQLQuery(SQL); query.addEntity("e",xx.class);//将sql执行的结果封装成指定的对象 NameQuery:在项目中多次执行的hql语句,方便维护 1.在配置文件中使用 </class> <query name="queryAllEmployee"><![CDATA[from Employee]]></query> </hibernate-mapping> 2.使用hibernateAPI Query query=session.getNamedQuery("queryAllEmployee");
1.提供实体类Dept.java和Employee.java
package com.jsu.hb.pojo;import java.util.HashSet;import java.util.Set;public class Dept { private Integer id; private String dname; private String dno; private Setemps = new HashSet (); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getDno() { return dno; } public void setDno(String dno) { this.dno = dno; } public Set getEmps() { return emps; } public void setEmps(Set emps) { this.emps = emps; } }
Employee.java
package com.jsu.hb.pojo;import java.util.Date;public class Employee { private Integer id; private String name; private Date birthday; private String email; private double salary; private Dept dept; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } }
2.建表
create table g_dept( t_id integer primary key, t_dname varchar2(20), t_dno varchar2(20))create table g_employee( t_id integer primary key, t_name varchar2(25), t_birthday date, t_salary number(12,2), t_email varchar2(50), d_id integer references g_dept(t_id))insert into g_dept(t_id,t_dname,t_dno) values (1,'dev','001');insert into g_dept(t_id,t_dname,t_dno) values (2,'train','002');insert into g_dept(t_id,t_dname,t_dno) values (3,'market','003');insert into g_dept(t_id,t_dname,t_dno) values (4,'game','004');insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id) values (1,'bobs',to_date('2012-1-11','yyyy-mm-dd'),'bobs@b',100.0,1);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (2,'scott',to_date('2010-10-11','yyyy-mm-dd'),'scott@b',300.0,1);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (3,'tiger',to_date('2008-2-11','yyyy-mm-dd'),'tiger@b',400.0,2);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (4,'lucy',to_date('2009-3-11','yyyy-mm-dd'),'lucy@b',600.0,2);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (5,'lily',to_date('2012-4-11','yyyy-mm-dd'),'lily@b',1000.0,3);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (6,'tom',to_date('2001-10-11','yyyy-mm-dd'),'tom@b',700.0,3);insert into g_employee(t_id,t_name,t_birthday,t_email,t_salary,d_id)values (7,'black',to_date('2001-10-11','yyyy-mm-dd'),'black@b',200.0,null);commit
3.提供映射文件query.hbm.xml
4.在hibernate.cfg.xml中对映射文件进行注册
true true oracle.jdbc.OracleDriver jdbc:oracle:thin:@127.0.0.1:1521:oracle scott tiger org.hibernate.dialect.Oracle9iDialect
5.提供工具类HibernateUtil.java
package com.jsu.hb.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { private static SessionFactory sf; private static ThreadLocaltl= new ThreadLocal (); static{ try{ Configuration cfg = new Configuration(); cfg.configure(); sf=cfg.buildSessionFactory(); }catch(Exception e){ e.printStackTrace(); } } public static Session openSession(){ return sf.openSession(); } public static Session getCurrentSession(){ Session session = tl.get();//先从储存的线程中查找 if(session==null){ session=openSession(); tl.set(session); return session; } return session; }}
6.提供测试类TestQ.java
public class TestQ{ public void testSQLquery(){ Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.getTransaction(); tx.begin(); String sql="select e.* from g_employee e ";//不能使用as SQLQuery query=session.createSQLQuery(sql); query.addEntity("e",Employee.class);//将sql执行的结果封装成指定的对象 Listemps=query.list(); System.out.println(emps.size()); tx.commit(); } @Test public void queryBYName(){ Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.getTransaction(); tx.begin();// String hql1 = "from Employee";// Query query = session.createQuery(hql1); Query query=session.getNamedQuery("queryAllEmployee"); List emps=query.list(); System.out.println(emps.size()); tx.commit(); }}
转载地址:http://kvhhi.baihongyu.com/