我们先看看大概的结构图;
package com.zking.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zking.entity.Person;
public class TestHQL {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void before(){
//打开事务
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
@After
public void after(){
transaction.commit();//提交事务
session.close();//关闭
sessionFactory.close();
}
//我们这里先具体直接看查询的方式
// Person 是个实体类 属性有pid,pname ,page
@Test
public void testhql(){
//查询所有
// List<Person> persons=session.createQuery("from Person").list();
// for (Person person : persons) {
// System.out.println(person);
// }
//查询某一列
// List<String> names=session.createQuery("select pname from Person").list();
// for (String string : names) {
// System.out.println(string);
// }
//查询某几列 查询结果来源于多张表
// List<Object[]> objects=session.createQuery("select pname,page from Person").list();
// for (Object[] objects2 : objects) {
// String pname=objects2[0].toString();
// int page=Integer.parseInt(objects2[1].toString());
// System.out.println(pname+" "+page);
// }
//构造查询
// List<Person> persons=session.createQuery("select new Person(pname,page) from Person").list();
// for (Person person : persons) {
// System.out.println(person);
// }
//带条件查询
//查询年龄在15 到 60 之间
// List<Person> persons=session.createQuery("from Person where page between ? and ?").setInteger(0, 15).setInteger(1, 60).list();
// List<Person> persons=session.createQuery("from Person where page between :min and :max").setInteger("min", 15).setInteger("max", 60).list();
// for (Person person : persons) {
// System.out.println(person);
// }
//聚合函数
// int page=Integer.parseInt(session.createQuery("select max(page) from Person").uniqueResult().toString());
// System.out.println(page);
//分页
// int pageNo=2;
// int pageSize=2;
// List<Person> persons=session.createQuery("from Person").setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize).list();
// for (Person person : persons) {
// System.out.println(person);
// }
//排序
//年龄
// List<Person> persons=session.createQuery("from Person order by page desc").list();
// for (Person person : persons) {
// System.out.println(person);
// }
}
}
引入的依赖有:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>G160628_hibernate03</groupId>
<artifactId>G160628_hibernate03</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>G160628_hibernate03 Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<argLine>-Dfile.encoding=UTF-8</argLine>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0-b07</version>
<scope>provided</scope>
</dependency>
<!-- 加入hibernate依赖 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<!-- Mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
</dependencies>
<build>
<finalName>G160628_hibernate03</finalName>
</build>
</project>
hibernate.cfg.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<-- 连接MySQL -->
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<--配实体类person-->
<mapping resource="com/zking/entity/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
person实体类:
package com.zking.entity;
public class Person {
private int pid;
private String pname;
private int page;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(int pid, String pname, int page) {
super();
this.pid = pid;
this.pname = pname;
this.page = page;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public Person(String pname, int page) {
super();
this.pname = pname;
this.page = page;
}
person配置文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-8-23 9:27:42 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.Person" table="PERSON">
<id name="pid" type="int">
<column name="PID" />
<generator class="native" />
</id>
<property name="pname" type="java.lang.String">
<column name="PNAME" />
</property>
<property name="page" type="int">
<column name="PAGE" />
</property>
</class>
</hibernate-mapping>