zoukankan      html  css  js  c++  java
  • 十二、增加Department

    1.增加Department

      1.1在com.myz.domain包下增加Department类

    package com.myz.domain;
    
    import java.util.Set;
    
    public class Department {
        
        private Integer id;//部门编号
        private String name;//部门名称
        
        private Set<Employee> emps;//员工
        
        
        public Department() {
            
        }
        public Department(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
        public Set<Employee> getEmps() {
            return emps;
        }
        public void setEmps(Set<Employee> emps) {
            this.emps = emps;
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

      1.2增加Department.hbm.xml

    <?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="com.myz.domain">
        <class name="Department" table="department">
            <cache usage="read-write"/>
            <id name="id" type="java.lang.Integer">
                <generator class="assigned"></generator>
            </id>
            <property name="name" type="java.lang.String">
                <column name="name"></column>
            </property>
            
            <!-- 一个部门可以有多个雇员-->
            <set name="emps" cascade="save-update">
                <key column="department_id"></key>
                <one-to-many class="Employee"/>
            </set>
        </class>
    </hibernate-mapping>

      1.3修改Employee类,修改Employee.hbm.xml

    package com.myz.domain;
    
    import java.util.Date;
    
    public class Employee {
        private Integer id;//编号
        private String name;//名字
        private String email;//邮件
        private Date hiredate;//雇用日期
        private Float salary;//工资
        private String password;//密码
        private Integer grade;//等级
        
        private Department department;//所属部门
        
        
        public Department getDepartment() {
            return department;
        }
    
    
        public void setDepartment(Department department) {
            this.department = department;
        }
    
    
    public Employee() {
            
        }
        
    
        public Employee(Integer id, String name, String email, Date hiredate,
                Float salary, String password, Integer grade) {
            super();
            this.id = id;
            this.name = name;
            this.email = email;
            this.hiredate = hiredate;
            this.salary = salary;
            this.setPassword(password);
            this.setGrade(grade);
        }
    
    
    
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Date getHiredate() {
            return hiredate;
        }
        public void setHiredate(Date hiredate) {
            this.hiredate = hiredate;
        }
        public Float getSalary() {
            return salary;
        }
        public void setSalary(Float salary) {
            this.salary = salary;
        }
    
    
        public void setGrade(Integer grade) {
            this.grade = grade;
        }
    
    
        public Integer getGrade() {
            return grade;
        }
    
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    
        public String getPassword() {
            return password;
        }
    }
    <?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="com.myz.domain">
        <class name="Employee" table="employee">
            <cache usage="read-write"/>
            <id name="id" type="java.lang.Integer">
                <generator class="assigned"></generator>
            </id>
            <property name="name" type="java.lang.String">
                <column name="name"></column>
            </property>
            <property name="email" type="java.lang.String">
                <column name="email" length="64"></column>
            </property>
            <property name="hiredate">
                <column name="hiredate"></column>
            </property>
            <property name="salary" type="java.lang.Float">
                <column name="salary"></column>
            </property>
            <property name="password" type="java.lang.String">
                <column name="password"></column>
            </property>
            <property name="grade" type="java.lang.Integer">
                <column name="grade"></column>
            </property>
            
            <!-- 一个雇员属于一个部门 -->
            <many-to-one name="department" column="department_id"></many-to-one>
        </class>
    </hibernate-mapping>

      1.4增加DepartmentServiceInterface接口和DepartmentService实现类到对应包下

    package com.myz.service.interfaces;
    
    import com.myz.domain.Department;
    
    public interface DepartmentServiceInterface {
        public void addDepartment(Department d);//添加部门
    }
    package com.myz.service.imps;
    
    import javax.annotation.Resource;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.classic.Session;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.myz.domain.Department;
    import com.myz.service.interfaces.DepartmentServiceInterface;
    
    @Transactional
    public class DepartmentService implements DepartmentServiceInterface {
    
        @Resource
        private SessionFactory sessionFactory;
    
        public SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    
        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
        
        public void addDepartment(Department d) {
            // TODO Auto-generated method stub
            Session session = sessionFactory.getCurrentSession();
            session.save(d);
        }
    
    }

      1.5在applicationContext.xml中配置DepartmentService

    <!-- 配置 DepartmentService,注解方式注入属性-->
        <bean id="departmentService" class="com.myz.service.imps.DepartmentService"></bean>

      1.6在applicationContext.xml中让spring管理Department.hbm.xml

    <property name="mappingResources">
                <list>
                    <value>com/myz/domain/Employee.hbm.xml</value>
                    <value>com/myz/domain/Department.hbm.xml</value>
                </list>
            </property>

    2.测试添加数据

    package com.myz.test;
    
    import java.util.Date;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.myz.domain.Department;
    import com.myz.domain.Employee;
    import com.myz.service.imps.EmployeeService;
    import com.myz.service.interfaces.DepartmentServiceInterface;
    import com.myz.service.interfaces.EmployeeServiceInterface;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
            DepartmentServiceInterface ds=(DepartmentServiceInterface) ac.getBean("departmentService");
            
            
    //        增加三个雇员到一个部门,均保存
            Employee e1=new Employee(13, "比尔盖茨", "2466@qq.com", new Date(), 4500f, "123456", 1);
            Employee e2=new Employee(14, "比尔盖茨", "2466@qq.com", new Date(), 4500f, "123456", 1);
            Employee e3=new Employee(15, "比尔盖茨", "2466@qq.com", new Date(), 4500f, "123456", 1);
            
            Department d1=new Department(1, "财务部");
            
            Set<Employee> emps=new HashSet<Employee>();
            emps.add(e1);
            emps.add(e2);
            emps.add(e3);
            
            d1.setEmps(emps);
            
            ds.addDepartment(d1);
            
        }
    }

    3.在mainFrame.jsp中,显示登录者的信息

      3.1显示登录者的姓名,由于登录时候我们把loginUser放入session中了,可以显示成功

    <h2>欢迎${loginUser.name}登录</h2>
        <a href="#">添加雇员</a><br/>
        <a href="#">显示雇员</a><br/>
        <a href="#">查询雇员</a><br/>
        <a href="#">退出系统</a><br/>
      </body>

      3.2显示登录者所在部门,却会报500的错,could not initialize proxy - no Session,这是懒加载引起的,登录时仅返回Employee对象就关闭session了,可后面发现还要查询loginUser.department.name

    <body>
      <h2>欢迎${loginUser.name}登录,你所在的部门为${loginUser.department.name}</h2>
        <a href="#">添加雇员</a><br/>
        <a href="#">显示雇员</a><br/>
        <a href="#">查询雇员</a><br/>
        <a href="#">退出系统</a><br/>
      </body>
  • 相关阅读:
    最短母串
    noip模拟测试7
    linux下的对拍程序
    noip模拟测试6
    QWidget 前后位置设定
    C++编程规范_第5~13条 设计风格
    random /timer/sort 示例代码
    资料准备
    【转】三维动态数组 分配与释放
    批量修改文件名
  • 原文地址:https://www.cnblogs.com/myz666/p/8438467.html
Copyright © 2011-2022 走看看