pojo:Emp.java
private Dept dept;//部门(多对一)
Emp.hbm.xml:
<!-- Emp类到Dept类的单向多对一映射,多个员工对应一个部门 -->
<!-- name:设定持久化类的属性名,此处为Emp的dept属性 -->
<!-- column:设定持久化类的属性对应的表的外键,此处为EMP表的外键DEPTNO -->
<!-- class:设定持久化类的属性的类型,此处设定dept属性的类型为Dept -->
<many-to-one name="dept" class="cn.hibernate.pojo.Dept" column="DEPTNO"/>
Dao:
public void save(Emp emp){
currentSession().save(emp);
}
public List<Emp> findByDept(Dept dept){
return currentSession().createQuery("from Emp where dept=?").setParameter(0, dept).list();
}
public List<Emp> findAll(){
return currentSession().createQuery("from Emp").list();
}
Service;
public void addEmp(Emp emp){
Transaction tx=null;
try {
tx=empDao.currentSession().beginTransaction();
empDao.save(emp);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
}
public List<Emp> findEmpsByDept(Dept dept){
Transaction tx=null;
List<Emp> empList=null;
try {
tx=empDao.currentSession().beginTransaction();
empList=empDao.findByDept(dept);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
return empList;
}
public List<Emp> findAllEmps(){
Transaction tx=null;
List<Emp> empList=null;
try {
tx=empDao.currentSession().beginTransaction();
empList=empDao.findAll();
for (Emp emp : empList) {
System.out.println("员工姓名:"+emp.geteName());
System.out.println("所在部门:"+emp.getDept().getdName());
}
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
return empList;
}
Test:
/*Emp emp=new Emp();
emp.setEmpNo(12);
emp.seteName("周永强");
Dept dept=new Dept();
dept.setDeptNo((byte)30);
emp.setDept(dept);
new EmpService().addEmp(emp);*/
/*Dept dept=new Dept();
dept.setDeptNo((byte)30);
List<Emp> empList=new EmpService().findEmpsByDept(dept);
for (Emp emp : empList) {
System.out.println(emp.geteName());
}*/
new EmpService().findAllEmps();