大配置文件:hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 指定数据库所用到的驱动 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 指定数据库链接的url,hibernate链接的数据库名 -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 指定连接数据库的用户名 -->
<property name="connection.username">root</property>
<!-- 指定连接数据库的用户口令 -->
<property name="connection.password">root</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!--格式化sql -->
<property name="format_sql ">true</property>
<!-- 打印sql 控制台-->
<property name="show_sql">true</property>
<!-- 指定数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 根据需要自动创建数据库表 -->
<property name="hbm2ddl.auto">update</property>
<!--关联小配置文件-->
<mapping resource="cn/day01/entity/School.hbm.xml"></mapping>
<mapping resource="cn/day03hql/hql/entity/Dept.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
实体类
public class Dept {
private int deptid;
private String deptname;
public Dept() {
}
public Dept(int deptid, String deptname) {
this.deptid = deptid;
this.deptname = deptname;
}
public int getDeptid() {
return deptid;
}
public void setDeptid(int deptid) {
this.deptid = deptid;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
}
小配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 映射文件开始 -->
<hibernate-mapping package="cn.day03hql.hql.entity">
<!--表名称-->
<class name="cn.day03hql.hql.entity.Dept" table="DEPT" schema="root">
<!--列名-->
<id name="deptid" column="DEPTID">
<!--主键生成的策略 native:自动生成主键字段-->
<generator class="native"></generator>
</id>
<property name="deptname" column="DEPTNAME"></property>
</class>
</hibernate-mapping>
测试类
添加条件可以使用名称占位符 (:name),也可以使用匿名占位符 (?)
01.匿名占位符
from Dept where name = ?
给占位符设置值 query.setParameter(0,值); 注意,参数从0开始
//参数查询 方法一 匿名占位符 ?占位符的索引下标从0开始
@Test
public void test05(){
//读取大配置文件
Configuration cfg=new Configuration().configure();
//session工厂
SessionFactory factory=cfg.buildSessionFactory();
//session对象
Session session = factory.openSession();
String hql=" from Dept where deptname=?";
Query query = session.createQuery(hql);
query.setParameter(0,"开发部");
List<Dept> list = query.list();
for (Dept dept:list){
System.out.println(dept.getDeptname());
}
}
02.,名称占位符
from Customer where ntitle= :title
给命名参数设置值 query.setParameter("title",值);
//参数查询 名称占位符 方法二 参数名称绑定 :name
@Test
public void test06(){
//读取大配置文件
Configuration cfg=new Configuration().configure();
//session工厂
SessionFactory factory=cfg.buildSessionFactory();
//session对象
Session session = factory.openSession();
String hql=" from Dept where deptname=:deptname";
Query query = session.createQuery(hql);
query.setParameter("deptname","开发部");
List<Dept> list = query.list();
for (Dept dept:list){
System.out.println(dept.getDeptname());
}
}
03.绑定命名参数与一个对象的属性值
//参数查询 对象类型 方法三 参数名称绑定+++对象属性 :name
@Test
public void test07(){
//读取大配置文件
Configuration cfg=new Configuration().configure();
//session工厂
SessionFactory factory=cfg.buildSessionFactory();
//session对象
Session session = factory.openSession();
String hql=" from Dept where deptname=:deptname";
Dept depts=new Dept();
depts.setDeptname("开发部");
Query query = session.createQuery(hql);
query.setProperties(depts);
List<Dept> list = query.list();
for (Dept dept:list){
System.out.println(dept.getDeptname());
}
}
多个参数查询类似,所以这里就不说了。