HQL的 分页
1.首先我们准备好实体类:
package cn.happy.hibernate04pagelist;
import cn.happy.hibernate03hql.conEmp;
import java.util.Date;
/**
* Created by linlin on 2017/9/25.
*/
public class Emp {
private Long empno;
private String empname;
private String job;
private Long mgr;
private Date hiredate;
private Long sal;
private Long comm;
private Byte deptno;
public Long getEmpno() {
return empno;
}
public void setEmpno(Long empno) {
this.empno = empno;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Long getMgr() {
return mgr;
}
public void setMgr(Long mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Long getSal() {
return sal;
}
public void setSal(Long sal) {
this.sal = sal;
}
public Long getComm() {
return comm;
}
public void setComm(Long comm) {
this.comm = comm;
}
public Byte getDeptno() {
return deptno;
}
public void setDeptno(Byte deptno) {
this.deptno = deptno;
}
}
然后是小配置:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.happy.hibernate03hql">
<class name="cn.happy.hibernate04pagelist.Emp" table="EmpSLL">
<id name="empno" column="empno" >
<generator class="native" />
</id>
<property name="empname" column="ENAME"/>
<property name="job" column="job"/>
<property name="mgr" column="mgr"/>
<property name="hiredate" column="hiredate"/>
<property name="sal" column="sal"/>
<property name="comm" column="comm"/>
<property name="deptno" column="deptno"/>
</class>
</hibernate-mapping>
大配置:
<?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="myeclipse.connection.profile">JDBC for MySQL</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/book</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="hibernate.show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.format_sql">true</property>
<!–生成特定数据库sql–>
<property name="hibernate.hbm2ddl.auto">update</property>
<!–thread指定当前线程来跟踪管理–>
<property name="current_session_context_class">thread</property>
<mapping resource="Dog.xml"></mapping>
</session-factory>
-->
<session-factory>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">sll</property>
<property name="connection.password">sll</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<!-- <property name="hbm2ddl.auto">update</property>-->
<property name="connection.autocommit">true</property>
<!-- <mapping resource="cn/happy/hibernate01/Cat.hbm.xml"/>
<mapping resource="cn/happy/hibernate02/Dept.hbm.xml"/>-->
<!-- <mapping resource="cn/happy/hibernate03hql/Emp.hbm.xml"/>
<mapping resource="cn/happy/hibernate04pagelist/Emp.hbm.xml"/>
<mapping resource="cn/happy/hibernate06mapping/Emp.hbm.xml"/>
<mapping resource="cn/happy/hibernate06mapping/Dept.hbm.xml"/>
<mapping resource="cn/happy/hibernate07onttomany/Emp.hbm.xml"/>
<mapping resource="cn/happy/hibernate07onttomany/Dept.hbm.xml"/>
-->
<mapping resource="cn/happy/hibernate08save/Emp.hbm.xml"/>
<mapping resource="cn/happy/hibernate08save/Dept.hbm.xml"/>
<mapping resource="cn/happy/hibernate09manytomany/Employee.hbm.xml"/>
<mapping resource="cn/happy/hibernate09manytomany/Project.hbm.xml"/>
</session-factory>
</hibernate-configuration>
测试类:
Configuration cfg;
Transaction tx;
Session session;
SessionFactory factory;
@Before
public void myBefore(){
//创建配置对象
cfg = new Configuration().configure("Hibernate.cfg.xml");
//根据配置对象创建SessionFactory
factory = cfg.buildSessionFactory();
//根据SessionFactory创建Session
session= factory.openSession();
/* Session session1= HibernateUtil.getSession();
System.out.println(session);
System.out.println(session1);*/
//在Session创建后开启事务
tx = session.beginTransaction();
}
//分页
@Test
public void testl8() {
String hql="from Emp";
Query query = session.createQuery(hql);
int pageindex=2;
int pagesize=3;
query.setFirstResult((pageindex-1)*pagesize);
query.setMaxResults(pagesize);
List<Emp> list=query.list();
for (Emp item:list){
System.out.println(item.getEmpname());
}
}
一对一单向查询:
实体 的关联:封装*****
并进行封装(get set)
然后是关联小配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.happy.hibernate06mapping">
<class name="cn.happy.hibernate06mapping.Dept" table="Dept" schema="sll">
<id name="deptno" column="deptno" >
<generator class="native" />
</id>
<property name="deptname" column="deptname"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.happy.hibernate06mapping">
<class name="cn.happy.hibernate06mapping.Emp" table="Emp" schema="sll">
<id name="empno" column="empno" >
<generator class="native" />
</id>
<property name="enmae" column="enmae"/>
<many-to-one name="dept" column="deptno"
class="cn.happy.hibernate06mapping.Dept"></many-to-one>
</class>
</hibernate-mapping>
大配置 如上述 一样 添加一个mapping
测试类:
//多对一
@Test
public void testmanyToOne(){
cn.happy.hibernate06mapping.Emp emp=session.get(cn.happy.hibernate06mapping.Emp.class,1);
System.out.println(emp.getDept().getDeptname());
}
小配置:
<?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.happy.hibernate09manytomany">
<class name="Employee" table="Employee22" schema="sll">
<id name="empid" column="empid">
<generator class="native"></generator>
</id>
<property name="empname" />
<!--table指的是中间表-->
<set name="projects" table="PROEMP22" inverse="true">
<key column="REMPID"></key>
<many-to-many column="RPROID" class="Project"></many-to-many>
</set>
</class>
</hibernate-mapping>
<?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.happy.hibernate09manytomany">
<class name="Project" table="Project22" schema="sll">
<id name="proid" column="proid">
<generator class="native"></generator>
</id>
<property name="proname" />
</class>
</hibernate-mapping>
测试类;
package cn.happy.test;
import cn.happy.hibernate08save.Dept;
import cn.happy.hibernate08save.Emp;
import cn.happy.hibernate09manytomany.Employee;
import cn.happy.hibernate09manytomany.Project;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* Created by linlin on 2017/9/22.
*/
public class test1006_02 {
Configuration cfg;
Transaction tx;
Session session;
SessionFactory factory;
@Before
public void myBefore() {
//创建配置对象
cfg = new Configuration().configure("Hibernate.cfg.xml");
//根据配置对象创建SessionFactory
factory = cfg.buildSessionFactory();
//根据SessionFactory创建Session
session = factory.openSession();
//在Session创建后开启事务
tx = session.beginTransaction();
}
@Test
public void test03() {
Employee emp=session.get(Employee.class,1);
System.out.println(emp.getEmpname());
System.out.println("============");
for(Project pro:emp.getProjects()){
System.out.println(pro.getProname());
}
}
}
版权声明:本文为qq_36074043原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。