首页 > Java开发 > 使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆

使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆

我这里使用的数据库是mysql5.0 数据是上课用的。这些都不是重点,重要的是学会这个方法;

创建好数据库:

create database jboadefault character set utf8;
show create database jboa1;

然后执行数据脚本

[sql]

  1. /*  
  2. Navicat MySQL Data Transfer  
  3.   
  4. Source Server         : MysqlLoal  
  5. Source Server Version : 50022  
  6. Source Host           : localhost:3306  
  7. Source Database       : jboa1  
  8.   
  9. Target Server Type    : MYSQL  
  10. Target Server Version : 50022  
  11. File Encoding         : 65001  
  12.   
  13. Date: 2014-05-26 07:22:09  
  14. */  
  15.   
  16. SET FOREIGN_KEY_CHECKS=0;  
  17.   
  18. -- ----------------------------  
  19. -- Table structure for biz_account  
  20. -- ----------------------------  
  21. DROP TABLE IF EXISTS `biz_account`;  
  22. CREATE TABLE `biz_account` (  
  23.   `id` int(11) NOT NULL auto_increment,  
  24.   `usr_id` varchar(13) default NULL,  
  25.   `acc_type` varchar(2) default NULL,  
  26.   `acc_money` double default NULL,  
  27.   `sheet_id` varchar(13) default NULL,  
  28.   `acc_time` datetime default NULL,  
  29.   PRIMARY KEY  (`id`)  
  30. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  31.   
  32. -- ----------------------------  
  33. -- Records of biz_account  
  34. -- ----------------------------  
  35.   
  36. -- ----------------------------  
  37. -- Table structure for biz_check_result  
  38. -- ----------------------------  
  39. DROP TABLE IF EXISTS `biz_check_result`;  
  40. CREATE TABLE `biz_check_result` (  
  41.   `id` bigint(20) NOT NULL auto_increment,  
  42.   `checker_sn` varchar(20) NOT NULL COMMENT '审核人',  
  43.   `sheet_type` varchar(20) NOT NULL COMMENT '单据类型',  
  44.   `sheet_id` bigint(20) NOT NULL COMMENT '单据编号',  
  45.   `check_time` datetime NOT NULL COMMENT '审核时间',  
  46.   `type` varchar(20) NOT NULL COMMENT '审核类型',  
  47.   `result` varchar(20) NOT NULL COMMENT '审核结果',  
  48.   `comm` varchar(255) default NULL COMMENT '审核意见',  
  49.   PRIMARY KEY  (`id`),  
  50.   KEY `FK5E0EAAE06F568938` (`checker_sn`),  
  51.   CONSTRAINT `FK5E0EAAE06F568938` FOREIGN KEY (`checker_sn`) REFERENCES `sys_employee` (`sn`)  
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  53.   
  54. -- ----------------------------  
  55. -- Records of biz_check_result  
  56. -- ----------------------------  
  57.   
  58. -- ----------------------------  
  59. -- Table structure for biz_claim_voucher  
  60. -- ----------------------------  
  61. DROP TABLE IF EXISTS `biz_claim_voucher`;  
  62. CREATE TABLE `biz_claim_voucher` (  
  63.   `id` bigint(20) NOT NULL auto_increment,  
  64.   `create_sn` varchar(20) NOT NULL COMMENT '填报人',  
  65.   `next_deal_sn` varchar(20) default NULL COMMENT '待处理人',  
  66.   `create_time` date NOT NULL COMMENT '填写时间',  
  67.   `event` varchar(255) NOT NULL COMMENT '事由',  
  68.   `total_account` double NOT NULL COMMENT '总金额',  
  69.   `status` varchar(20) NOT NULL COMMENT '状态',  
  70.   PRIMARY KEY  (`id`),  
  71.   KEY `FKF5F9537FB1925E91` (`create_sn`),  
  72.   KEY `FKF5F9537F34489BD5` (`next_deal_sn`),  
  73.   CONSTRAINT `FKF5F9537F34489BD5` FOREIGN KEY (`next_deal_sn`) REFERENCES `sys_employee` (`sn`),  
  74.   CONSTRAINT `FKF5F9537FB1925E91` FOREIGN KEY (`create_sn`) REFERENCES `sys_employee` (`sn`)  
  75. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  76.   
  77. -- ----------------------------  
  78. -- Records of biz_claim_voucher  
  79. -- ----------------------------  
  80.   
  81. -- ----------------------------  
  82. -- Table structure for biz_claim_voucher_detail  
  83. -- ----------------------------  
  84. DROP TABLE IF EXISTS `biz_claim_voucher_detail`;  
  85. CREATE TABLE `biz_claim_voucher_detail` (  
  86.   `id` bigint(20) NOT NULL auto_increment,  
  87.   `main_id` bigint(20) NOT NULL COMMENT '报销单(主单)编号',  
  88.   `item` varchar(20) NOT NULL COMMENT '项目',  
  89.   `account` double NOT NULL COMMENT '金额',  
  90.   `des` varchar(200) NOT NULL COMMENT '费用说明',  
  91.   PRIMARY KEY  (`id`),  
  92.   KEY `FKEC02A511C5CE4518` (`main_id`),  
  93.   CONSTRAINT `FKEC02A511C5CE4518` FOREIGN KEY (`main_id`) REFERENCES `biz_claim_voucher` (`id`)  
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  95.   
  96. -- ----------------------------  
  97. -- Records of biz_claim_voucher_detail  
  98. -- ----------------------------  
  99.   
  100. -- ----------------------------  
  101. -- Table structure for sys_department  
  102. -- ----------------------------  
  103. DROP TABLE IF EXISTS `sys_department`;  
  104. CREATE TABLE `sys_department` (  
  105.   `id` int(11) NOT NULL auto_increment,  
  106.   `manager_sn` varchar(20) default NULL COMMENT '部门经理',  
  107.   `namevarchar(45) NOT NULL COMMENT '部门名称',  
  108.   PRIMARY KEY  (`id`),  
  109.   KEY `FK1AC9880422A0A640` (`manager_sn`)  
  110. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  111.   
  112. -- ----------------------------  
  113. -- Records of sys_department  
  114. -- ----------------------------  
  115. INSERT INTO `sys_department` VALUES ('1''1''1');  
  116.   
  117. -- ----------------------------  
  118. -- Table structure for sys_dictionary  
  119. -- ----------------------------  
  120. DROP TABLE IF EXISTS `sys_dictionary`;  
  121. CREATE TABLE `sys_dictionary` (  
  122.   `id` bigint(20) NOT NULL auto_increment,  
  123.   `type` varchar(20) NOT NULL,  
  124.   `item` varchar(20) NOT NULL,  
  125.   `value` varchar(20) NOT NULL,  
  126.   PRIMARY KEY  (`id`)  
  127. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  128.   
  129. -- ----------------------------  
  130. -- Records of sys_dictionary  
  131. -- ----------------------------  
  132.   
  133. -- ----------------------------  
  134. -- Table structure for sys_employee  
  135. -- ----------------------------  
  136. DROP TABLE IF EXISTS `sys_employee`;  
  137. CREATE TABLE `sys_employee` (  
  138.   `sn` varchar(20) NOT NULL,  
  139.   `department_id` int(11) NOT NULL COMMENT '部门',  
  140.   `position_id` int(11) NOT NULL COMMENT '职务编号',  
  141.   `passwordvarchar(45) NOT NULL COMMENT '密码',  
  142.   `namevarchar(45) NOT NULL COMMENT '姓名',  
  143.   `status` varchar(20) NOT NULL COMMENT '状态',  
  144.   PRIMARY KEY  (`sn`),  
  145.   KEY `FKDE6BAFE015B8AA9F` (`department_id`),  
  146.   KEY `FKDE6BAFE019C7389` (`position_id`),  
  147.   CONSTRAINT `FKDE6BAFE015B8AA9F` FOREIGN KEY (`department_id`) REFERENCES `sys_department` (`id`),  
  148.   CONSTRAINT `FKDE6BAFE019C7389` FOREIGN KEY (`position_id`) REFERENCES `sys_position` (`id`)  
  149. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  150.   
  151. -- ----------------------------  
  152. -- Records of sys_employee  
  153. -- ----------------------------  
  154. INSERT INTO `sys_employee` VALUES ('admin''1''1''admin''admin''1');  
  155.   
  156. -- ----------------------------  
  157. -- Table structure for sys_position  
  158. -- ----------------------------  
  159. DROP TABLE IF EXISTS `sys_position`;  
  160. CREATE TABLE `sys_position` (  
  161.   `id` int(11) NOT NULL auto_increment,  
  162.   `name_cn` varchar(45) NOT NULL COMMENT '职务名称(中文)',  
  163.   `name_en` varchar(45) NOT NULL COMMENT '职务名称(英文)',  
  164.   PRIMARY KEY  (`id`)  
  165. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  166.   
  167. -- ----------------------------  
  168. -- Records of sys_position  
  169. -- ----------------------------  
  170. INSERT INTO `sys_position` VALUES ('1''管理员''admin');  

创建好Web Project后,加入Hibernate支持


选择配置好的数据库:

new 新建一个包:

添加Spring支持:

下面的意思是 : 在配置文件里面创建sessionFactory的引用

反向生成Hibernate 实体类: 右上角却换到Databse Explorer perspective 视图模式 下

选择要生成的表 右击 → Hibernate Reverse Engineering

MySql的主键自动生成策略可以用identity 或者native

需要改生成的类的 类名或者属性名 可以在这里改,一般我们要修改一下实体类的类名,因为有时候不可以和数据库一样的名字;

这里要指定主键类型,因为这个类主键不是自动生成的 是手动添加的,其他不用指定默认是前面指定的(自动生成)。

将自动生成的 类 和配置文件 都整理到com.jboa.model包中

将所有配置文件hbm.xml前面加上整理到的 包

<hibernate-mapping package="com.jboa.model">

然后将他们都配置到hibernate.cfg.xml文件可以直接选中配置文件然后拖拽到图形化界面的Hibernate配置文件,如图:

<mapping resource="com/jboa/model/Employee.hbm.xml" />
…..

在web.xml加上Spring的监听器

[html]

  1. <!-- 整合Spring -->  
  2. <context-param>  
  3.     <param-name>contextConfigLocation</param-name>  
  4.     <param-value>classpath:applicationContext.xml</param-value>  
  5. </context-param>  
  6.   
  7. <listener>  
  8.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  9. </listener>  

添加Struts2支持

整合好了。

添加dao接口

[java]

  1. public interface EmployeeDao extends Serializable {  
  2.     public Employee findById(String sn);  
  3. }  

添加接口的实现类

[java]

  1. public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao {  
  2.   
  3.     public Employee findById(String sn) {  
  4.         return this.getHibernateTemplate().get(Employee.class, sn);  
  5.     }  
  6.   
  7. }  

在Spring配置文件applicationContext.xml 配置HibernateDaoSupport的sessionFactory

[html]

  1. <bean id="employeeDao" class="com.jboa.dao.impl.EmployeeDaoImpl" depends-on="sessionFactory">  
  2.         <property name="sessionFactory" ref="sessionFactory"></property>  
  3. </bean>  

创建Action ( EmployeeAction )

[java]

  1. private Employee employee;  
  2.   
  3. private EmployeeDao employeeDao;  
  4.   
  5. //设置set方法,这样在Spring配置文件就可以配置值了  
  6. public void setEmployeeDao(EmployeeDao employeeDao) {  
  7.     this.employeeDao = employeeDao;  
  8. }  
  9.   
  10. //登陆验证  
  11. public String login() {  
  12.     Employee e = employeeDao.findById(employee.getSn());  
  13.     if (e != null && employee.getPassword().equals(e.getPassword())) {  
  14.         ActionContext.getContext().getSession().put("loginUser", e);  
  15.         return SUCCESS;  
  16.     }  
  17.     return INPUT;  
  18. }  
  19.   
  20. public Employee getEmployee() {  
  21.     return employee;  
  22. }  
  23.   
  24. public void setEmployee(Employee employee) {  
  25.     this.employee = employee;  
  26. }  

在dao的实现类实现findById方法

[java]

  1. public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao {  
  2.   
  3.     public Employee findById(String sn) {  
  4.         return this.getHibernateTemplate().get(Employee.class, sn);  
  5.     }  
  6.   
  7. }  

在Spring的配置文件applicationContext.xml配置

[html]

  1. <!-- scope="prototype"多例,表示每次使用都创建一个新的,单例则不创建新的 -->  
  2.     <bean id="employeeAction"  class="com.jboa.action.EmployeeAction" scope="prototype">  
  3.         <property name="employeeDao" ref="employeeDao"></property>  
  4.     </bean>  

配置struts.xml文件

[html]

  1. <constant name="struts.devMode" value="true"></constant>  
  2. <package name="jboa" extends="struts-default" namespace="/">  
  3.     <action name="login" class="employeeAction" method="login" >  
  4.         <result>/index.jsp</result>  
  5.         <result name="input">/login.jsp</result>  
  6.     </action>  
  7. </package>  

这样就可以了 接下来在WebRoot创建登陆页面测试 login.jsp,在数据库employee表添加登陆测试数据

[html]

  1. <form action="login" method="post">  
  2.         登陆名:<input name="employee.sn" /><br/>  
  3.         密码:<input type="password" name="employee.password" /><br/>  
  4.         <input type="submit" />  
  5.    </form>  

测试 部署启动tomcat,访问login.jsp,登陆成功;
成功!


本文固定链接: http://www.devba.com/index.php/archives/5619.html | 开发吧

报歉!评论已关闭.