1.SQL 本地Sql查询 ------> createSQLQuery( "sql查询语句").addEntity(实体类);
2.HQL Hibernate 查询语言------> createQuery("from 实体类")
3.QBC(Query by cretirea)标准查询 ------> createCriteria(实体类)
4.get,load方式查询 ------> get(实体类,查询id值(即序列号));
代码如下
package Hibernate;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;
public class test {
private static SessionFactory sf;
static{
Configuration conn = new Configuration().configure();
sf = conn.buildSessionFactory();
}
// 自动建表
//@Test
public void testCreate() throws Exception {
// 创建配置管理类对象
Configuration config = new Configuration();
// 加载主配置文件
config.configure();
// 创建工具类对象
SchemaExport export = new SchemaExport(config);
// 建表
// 第一个参数: 是否在控制台打印建表语句
// 第二个参数: 是否执行脚本
export.create(true, true);
}
//QBC完全面向对象查询
// @Test
public void query_qbc() {
Configuration conn = new Configuration().configure();
SessionFactory sf = conn.buildSessionFactory();
Session session = sf.openSession();
Criteria cc = session.createCriteria(Employee_bean.class);
cc.add(Restrictions.eq("empId", 1));
List list = cc.list();
System.out.println(list);
}
//
//@Test
public void query_hql() {
Session session = sf.openSession();
Query cq = session.createQuery("from Employee_bean");
List list = cq.list();
System.out.println(list);
}
//@Test
public void query_sql() {
Session session = sf.openSession();
SQLQuery sq = session.createSQLQuery( "select * from Employee where id=1").addEntity(Employee_bean.class);
List list = sq.list();
System.out.println(list);
}
@Test
public void query_get_load() {
Session session = sf.openSession();
Employee_bean emp1 = (Employee_bean) session.get(Employee_bean.class, 1);
Employee_bean emp2 = (Employee_bean) session.load(Employee_bean.class, 1);
System.out.println(emp2);
//另外可以使用get或者load方式,直接获取数据某个字段的元组值
System.out.println(emp2.getEmpName());
//总结:其实load和get效果差不多但是 ,get和load方法有区别---->get是直接输出sql语句;load是懒加载,load采用代理,等使用该对象的时候才输出结果!
}
}