博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernateday06 SQLQuery 和NameQuery
阅读量:4247 次
发布时间:2019-05-26

本文共 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 Set
emps = 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 ThreadLocal
tl= 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执行的结果封装成指定的对象		List
emps=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/

你可能感兴趣的文章
Access数据库出现"Selected collating sequence not supported by the operating system."错误
查看>>
逻辑思维测试题
查看>>
如何用Easy CHM制作CHM格式电子书(帮助文档)
查看>>
为什么学习python
查看>>
华为进不了美国,并不是贸易保护这么简单
查看>>
markdown文件的基本常用编写语法(图文并茂)
查看>>
java变量简介
查看>>
Shell十分钟入门
查看>>
nginx 配置 upstream backup 报错
查看>>
Linux执行 wget命令:提示command not found的两种解决方法
查看>>
openssl实现md5加rsa签名
查看>>
史上最全的前端学习路线图,干货满满
查看>>
来点不一样的:解耦 HTML、CSS 和 JS之间的那些事
查看>>
使用go编写webassembly
查看>>
从矩阵与空间操作的关系理解CSS3的transform(科普文)
查看>>
你也想做掌控全局的 React 大师吗?
查看>>
Javascript中的尾递归及其优化
查看>>
前端面试之手写一个bind方法
查看>>
浅析当下的 Node.js CommonJS 模块系统
查看>>
如何让 node 也支持从 url 加载一个 module?
查看>>