• hibernate + struts demo


     

    1.entity(dept.java    ,    employee.java,    dept.hbm.xml    , employee.hbm.xml)

    public class dept {
    private int deptid;
    private String deptname;
    private Set<employee> emps= new HashSet<employee>();
    public dept(int deptid, String deptname) {
        super();
        this.deptid = deptid;
        this.deptname = deptname;
    }
    
    public dept() {                   //如果该处没增加 构造函数 ,会报错无构造器
        super();
        // TODO Auto-generated constructor stub
    }
    
    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;
    }
    public Set<employee> getEmps() {
        return emps;
    }
    public void setEmps(Set<employee> emps) {
        this.emps = emps;
    }
    
    @Override
    public String toString() {
        return "dept [deptid=" + deptid + ", deptname=" + deptname + "]";
    }
    
    }
    public class employee {
    private int empid;
    private String empname;
    private double  salary;
    private dept dept;
    public int getEmpid() {
        return empid;
    }
    public void setEmpid(int empid) {
        this.empid = empid;
    }
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public double getSalary() {
        return salary;
    <?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.itcast.entity" >  
        <class name="dept"  table="t_dept">
        <id name="deptid" >
        <generator class="native"></generator>
        
        </id>
        <property name="deptname" length="20"/>
        
        <set name="emps">
        <key column="dept_id"></key>
        <one-to-many  class="employee"/>
        
        </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.itcast.entity" >  
        <class name="employee"  table="t_employ">
        <id name="empid" >
        <generator class="native"></generator>
        
        </id>
        <property name="empname"  length="20" />
         <property name="salary" type="double"></property>
        
         <many-to-one name="dept" column="dept_id "  class="dept"></many-to-one>
    
        </class>
        </hibernate-mapping>
    
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public dept getDept() {
        return dept;
    }
    public void setDept(dept dept) {
        this.dept = dept;
    }
    
    }

    hibernate.cfg.xml

    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <!-- 通常,一个session-factory节点代表一个数据库 -->
        <session-factory>
        
            <!-- 1. 数据库连接配置 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///hib_demo</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">root</property>
            <!-- 
                数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
             -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
            
            
            <!-- 2. 其他相关配置 -->
            <!-- 2.1 显示hibernate在运行时候执行的sql语句 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 2.2 格式化sql -->
            <property name="hibernate.format_sql">true</property>
            
            <!-- 2.3 自动建表  -->
            <property name="hibernate.hbm2ddl.auto">update</property>
            
            <property name="hibernate.current_session_context_class">thread</property>
        
            <mapping resource="cn/itcast/entity/dept.hbm.xml"/>
            <mapping resource="cn/itcast/entity/employee.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

    struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    
        <package name="dept" extends="struts-default">
    
            <!-- 拦截器配置 -->
            <interceptors>
                <interceptor name="sessioninterceptor" 
                
                class="cn.itcast.interceptor.sessioninterceptor"></interceptor>
                <interceptor-stack name="myStack">
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                    <interceptor-ref name="sessioninterceptor"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="myStack"></default-interceptor-ref>
            
            <!-- action配置 -->
            <action name="show" class="cn.itcast.deptaction.deptaction">
                <result name="success">/index.jsp</result>
            </action>
    
        </package>
    
    </struts>
    hibernateutils.java
    package cn.itcast.utils;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class hibernateutils {
    private static SessionFactory sf;
    static{
        sf= new Configuration().configure().buildSessionFactory();
    }
    public static Session getsession(){
        return sf.getCurrentSession();
    }
    }
    package cn.itcast.interceptor;
    
    import org.hibernate.Session;
    
    import cn.itcast.utils.hibernateutils;
    
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
    
    public class sessioninterceptor extends AbstractInterceptor {
    
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            // TODO Auto-generated method stub
            try {
                Session session=hibernateutils.getsession();
                session.beginTransaction();
                
                
                String result=invocation.invoke();  

    //session 在action之前就已经存在 该处可以打断点理解
    session.getTransaction().commit();
    return result; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return "error"; } } }
    public class deptaction extends ActionSupport{
    
        private deptservice deptservice= new deptservice();
        
        
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            
            dept dept = deptservice.findbyid(4);
            ActionContext.getContext().getContextMap().put("dept",dept );
            return SUCCESS;
        }
    
    }
    public class deptdao {
    public dept findbyid(int id){
        return  (dept) hibernateutils.getsession().get(dept.class, id);
        
    }
    }
    public class deptservice {
        
        
        private deptdao deptdao= new deptdao();
    public dept findbyid(int id){
        return deptdao.findbyid(id);
    }
    }
    index.jsp 

    <body> <h2>部门:<s:property value="#request.dept.deptname"/></h2> <table> <tr> <td> 员工编号</td> <td>员工姓名</td> <td>员工薪水</td> </tr> <s:if test="#request.dept.emps!=null"> <s:iterator var="emp" value="#request.dept.emps"> <tr> <td><s:property value="#emp.empid"/></td> <td><s:property value="#emp.empname"/></td> <td><s:property value="#emp.salary"/></td> </tr> </s:iterator> </s:if> <s:else> <tr><td colspan="3">没有员工信息</td></tr> </s:else> </table> </body> </html>
  • 相关阅读:
    埃及分数问题(JLNUOJ 2372)
    哈夫曼树的简单实现(JLOJ2370)
    4 Values whose Sum is 0 UVA 1152
    UVA 1600 Patrol Robot
    UVA122 二叉树的层次遍历
    51nod(1174 区间中最大的数)(ST表模板题)
    51nod(1089 最长回文子串 V2)(hash 加二分)
    中国剩余定理(费马小定理求逆元)
    hdu1005 矩阵快速幂
    八连通(vector动态数组法)
  • 原文地址:https://www.cnblogs.com/yimian/p/7891419.html
Copyright © 2020-2023  润新知