手把手叫你从头搭建SSH2项目(一)(原创)

搭配环境:jdk6+myeclipse8.5+tomcat6(自己配置到myeclipse8中)+mysql+spring3.0+hibernate3.3+struts2 

项目名称:员工管理(Employee)

好了,开始我们的第一个ssh2之旅吧。 

废话不说直接上图:完成后的项目结构图

首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张员工表单,让你实现增删改查操作。
第一步:。我们首先新建一张mysql数据表

sql:

CREATE TABLE `t_employee` (
  `Id` int(11) NOT NULL auto_increment,
  `Name` varchar(20) default NULL,
  `Age` varchar(20) default NULL,
  `Sex` varchar(20) default NULL,
  `Tel` varchar(20) default NULL,
  `Address` varchar(20) default NULL,
  PRIMARY KEY  (`Id`)
)

数据表创建完之后打开你的myeclipse8.5,建议不要用myeclipse10(太卡了,有木有?什么它有javascript环境优势,有个什么用随便一个浏览器就能搞定,还需要myeclipse10?)

第二步 打开myeclipse,新建一个web项目,命名为Employee_SSH, java ee规范我们选择5,如图 

第三步 MySQL JDBC驱动copylib目录下

   然后我们建好文件夹用来区分自己的类之间区别,磨刀不误砍柴工,先做好前面的工作,事倍功半

 

第四步 从主菜单栏,选中Windows Open Perspective --> Other MyEclipse Database Explorer,打开MyEclipse Database Explorer视图。

 

点击鼠标右键 --->New(创建一个新的数据库连接),进入如下图所示:

注:上图中 Driver JARS 中添加的就是我们在第二部添加的msql的jdbc驱动。

有人问了问什么要创建?

回答:为了在Hibernate在创建持久化类的时候不要自己手动创建,直接用这个数据库连接就可以自动创建,开发的时候就会节省很多时间

第五步 开始搭建Hibeinate框架,用myeclipse插件(简单方便)(还有有人问了,不是先搭建Spring框架吗?

答案是:没必要,主要区别就是你的项目中是否有Hibeinate配置文件hibernate.cfg.xml,如果先搭建Spring框架的话就不用生产hibernate.cfg.xml,

因为在Spring的配置文件applicationConten.xml文件中会配置和数据库连接有关的信息。下面内容中你会看到这2种的不同)
导入Hibeinate的各个jar,步骤如下: 

(1)选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图 

 

务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next

 

去掉specify database……复选框,next,去掉create session……复选框,finish。 

这时你会看到在你的项目下的 src文件下生成了hibernate.cfg.xm文件,其代码如下:

<?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">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/chat</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="show_sql">true</property>
        <property name="myeclipse.connection.profile">emp</property>
    
    </session-factory>

</hibernate-configuration>

 

第六步 开始搭建Hibeinate框架导入ssh2的各个jar,步骤如下: 

  选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图 

选中上述5项后点击 Next

 

 

点击finish 完成。

其自动生成了spring的配置文件applicationContent.xml文件,其代码为:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans
 3     xmlns="http://www.springframework.org/schema/beans"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xmlns:p="http://www.springframework.org/schema/p"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 7 
 8 
 9     <bean id="sessionFactory"
10         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
11         <property name="configLocation"
12             value="classpath:hibernate.cfg.xml">
13         </property>
14     </bean></beans>

 

其中我们就可以看到在创建sessionFactory时我们加载了先前生成的hibernate.cfg.xml文件。

上面我们讨论了先搭建Hibernate才有hibernate.cfg.xml文件,如果我们先搭建Spring框架时,就没有hibernate.cfg.xml文件,那么它的数据库连接就是在

applicationContent.xml文件配置了,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    
     <!-- 配置数据源 -->
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName" value="com.mysql.jdbc.Driver" ></property>
     <property name="url" value="jdbc:mysql://localhost:3306/chat" ></property>
     <property name="username" value="root"></property>
     <property name="password" value="root" ></property>
   </bean></beans>

 

第七步  我们的目的是在src下建好的文件夹分别为com下 com—>ucap—>emp—pojo中添加持久化类,从第四部(从主菜单栏,选中Windows Open Perspective --> Other MyEclipse Database Explorer,打开MyEclipse Database Explorer视图)中打开以创建的数据库连接emp,找到我们创建的表t_employee后,选中数据库表t_employee,右击,选择菜单Hibernate Reverse Engineering…,将启动Hibernate Reverse Engineering向导,生成实体类为Employee,如图

(注:上图中我们勾选了Java Data Access Obeject(DAO)是为了找一个有可以自动创建了日志类的模板,

  因为这是第一个SSH2的项目,如果你以前有就不勾选了)

单击Next

单击Next

 

 

单击finish,查看你的src下com—>ucap—>emp—pojo文件夹下的文件,生成6个文件如下

 

为了方便使用,我们对这6个修改(就是把第一个TEmployee类,改为Employee,删除第一二三个类,修改映射文件,将TEmplyeeDAO.java文件修改为EmployeeDaoImp.java,然后放到dao文件下面)

 

这六个文件修改成这3个文件,其中持久化类Employee.java 代码如下:

package com.ucap.emp.pojo;



/**
 * TEmployee entity. @author MyEclipse Persistence Tools
 */

public class Employee  implements java.io.Serializable {


    // Fields    

     private int id;
     private String name;
     private String age;
     private String sex;
     private String tel;
     private String address;
   
    // Property accessors

    public int getId() {
        return this.id;
    }
    
    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return this.age;
    }
    
    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return this.sex;
    }
    
    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTel() {
        return this.tel;
    }
    
    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getAddress() {
        return this.address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
   
}

 

 

 其映射文件Employee.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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.ucap.emp.pojo.Employee" table="t_employee" >
        
        <id name="id" type="java.lang.Integer">
            <column name="Id" />
            <generator class="increment"/>
        </id>
        
        <property name="name" type="java.lang.String">
            <column name="Name" length="20" />
        </property>
        <property name="age" type="java.lang.String">
            <column name="Age" length="20" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="Sex" length="20" />
        </property>
        <property name="tel" type="java.lang.String">
            <column name="Tel" length="20" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="Address" length="20" />
        </property>
    </class>
</hibernate-mapping>

 而我们的dao文件夹下面有EmployeeDaoImp.java文件代码如下:

 

package com.ucap.emp.dao;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ucap.emp.pojo.Employee;

/**
 	* A data access object (DAO) providing persistence and search support for TEmployee entities.
 			* Transaction control of the save(), update() and delete() operations 
		can directly support Spring container-managed transactions or they can be augmented	to handle user-managed Spring transactions. 
		Each of these methods provides additional information for how to configure it for the desired type of transaction control. 	
	 * @see com.ucap.emp.pojo.TEmployee
  * @author MyEclipse Persistence Tools 
 */

public class EmployeeDaoImp {
	private static final Logger log = LoggerFactory.getLogger(EmployeeDaoImp.class);
	
    public void save(Employee transientInstance) {
        log.debug("saving TEmployee instance");
        try {
            //此处为我对数据的操作
            log.debug("save successful");
        } catch (RuntimeException re) {
            log.error("save failed", re);
            throw re;
        }
    }
}

 

页面太长了,我写下一篇了

 

posted @ 2013-04-19 10:11  cq-home  Views(1688)  Comments(2Edit  收藏  举报