1.概念
1.1、Struts2
背景
由出色稳定的框架struts1和WebWork框架整合而来。
- (struts1是Apache软件基金会赞助的一个开源项目,它通过采育好难过javaservlet/jsp技术,实现了基于java ee web应用的mvc设计模式的应用框架,是mvc经典设计模式中的一个经典产品。struts1结构简单小巧,十分易用,一度市场占有率超过20%,struts1框架,与jsp/servlet耦合非常紧密,这制约了它的发展,以至于被后来的框架陆续赶超)。
- (webwork是有Opensysphony组织开发的,是建立在成为xwork的command模式框架之上的强大的mvc框架,webwork晚于struts1,技术上更为先进,由于组织至猛毒,人们习惯等原因。webwork市场的反响不如struts1)
- struts2与struts1差别巨大,不能理解为struts1的升级版。
- struts2以xwork为核心,可以理解为webwork的升级版。
- 吸取了两大框架的优点
- 吸收了自动封装数据技术,简化了许多冗余代码
- 提高了开发效率和规范性
- 更好的实现了mvc架构
概念
解除了与servlet的强耦合性
轻量级MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。所谓轻量级,低侵入性,与业务代码的耦合度很低。即业务代码中基本不需要import它的包。struts2实现了MVC,并提供了一些列API,采用模式化方式简化业务开发过程。
1.2、Hibernate
ORM
hibernate中一个比较重要的概念,全称是Object Relational Mapping(直译就是对象关系映射)。说白呢就是一个关系映射,把我们的实体类的对象映射到数据库中对应的表中去。然后我们只需要通过调用Session对象的save、update、delete、get、load等方法就可以对数据库表数据进行增删查改等操作。这个概念不难理解,但是我觉得是贯穿整个hibernate框架的重要思想。
hibernate的核心接口和类
- hibernate的核心接口和类一共有6个。分别是Session、SessionFactory、Transaction、Query、Criteria 和 Configuration
- Session: Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)
- SessionFactory:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。
- Transaction:Transaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。
- Query: Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
- Criteria:Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。
- Configuration:Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。
2.创建项目
2.1、目录结构
配置文件:
- struts.xml
- spring.xml
- hibernate.cfg.xml(IDEA自动生成映射文件)
资源文件:
- jdbc.propertis
- log4j.properties

2.2、创建项目
- 记得勾上Create from archetype,才可选择。
- 注意:选择maven-archetype-webapp
我使用的是IDEA2023版,直接有Maven archetype,然后在archetype中选择maven-archetype-webapp


3.配置文件
3.1、配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>SSHTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 统一各个框架版本 -->
<struts.version>2.5.10</struts.version>
<spring.version>4.3.8.RELEASE</spring.version>
<hibernate.version>5.1.7.Final</hibernate.version>
<!--<hibernate.version>5.2.10.Final</hibernate.version>-->
</properties>
<dependencies>
<!-- Junit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!-- Spring 核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring整合ORM框架依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Struts2 核心依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- Struts2和Spring整合依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- Hibernate 核心依赖 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- MySQL 依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<!--Oracle 依赖-->
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- C3P0 依赖 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5</version>
</dependency>
<!-- AspectJ依赖 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
<!-- SLF4J依赖 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 统一源代码编译输出的JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- 打包时跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- 集成Tomcat插件 -->
<!--<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.artifactId}</path>
</configuration>
</plugin>-->
</plugins>
<finalName>SSH_Test</finalName>
</build>
</project>
3.2、创建 jdbc.properties 并配置
jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@172.27.12.1:1521/orcl
jdbc.username=tzdyq
jdbc.password=******
3.3、创建 log4j.properties 并配置
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %t %c{2}:%L - %m%n
3.4、创建 spring.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"
default-autowire="byName">
<!-- 开启包扫描,并注册注解 -->
<context:component-scan base-package="com.ssh.*"/>
<!-- 引入属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置C3P0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 数据库连接相关信息 -->
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置Hibernate的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置Hibernate属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop><!-- 是否展示SQL -->
<prop key="hibernate.hbm2ddl.auto">update</prop><!-- 是否自动创建表结构 -->
<!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>-->
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
</props>
</property>
<!-- 扫描并加载注解过的实体类 -->
<property name="packagesToScan" value="com.ssh.model"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<!-- 注入SessionFactory -->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
-->
<!-- 配置事务增强 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<!-- <tx:method name="*" propagation="true" />-->
</tx:attributes>
</tx:advice>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置切面 -->
<aop:config>
<!-- 配置切入点
* org.ssh.service.*+.*(..)
*:表示方法的作用域,*表示所有
org.ssh.service.*:表示org.ssh.service下的任何包
org.ssh.service.*+:表示org.ssh.service下的任何包及其子包
*(..):*表示任何方法,(..)表示方法的任何参数
-->
<aop:pointcut id="pointcut" expression="execution(* com.ssh.*.service.*+.*(..))"/>
<!-- 适配切入点和事务增强 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
</beans>
这里遇到一个问题,就是配置sessionFactory中的hibernateProperties时,hibernate.dialect这个属性选择11g的oracle一直报错,然后一直没找到适配org.hibernate.dialect.Oracle11gDialect的jar包,只能改用org.hibernate.dialect.Oracle10gDialect来避免报错,不知道后续有啥影响。
3.5、创建 struts.xml 并配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 默认访问页面 -->
<package name="default" extends="struts-default" namespace="/">
<default-action-ref name="default"/>
<action name="default">
<result>/</result>
</action>
</package>
<!-- 商品相关请求转发 -->
<!-- Struts2在2.5版本后添加strict-method-invocation(严格方法访问),默认为true,不能使用动态方法调用功能,故需设为false -->
<package name="smBlsqd" extends="struts-default" namespace="/" strict-method-invocation="false">
<!-- 保存商品 -->
<action name="smBlsqd_*" class="com.ssh.action.SmBlsqdAction" method="{1}SmBlsqd">
<result>/</result>
<!--<result>/error.jsp</result>-->
</action>
</package>
<!-- 引入资源文件 -->
<constant name="struts.custom.i18n.resources" value="messageResource"></constant>
</struts>
其中action标签中的name属性smBlsqd_*是动作的名称模式,这里使用了通配符*,它表示以smBlsqd_开头的一系列动作名称都可以匹配到这个配置。例如,smBlsqd_save、smBlsqd_update等这样的动作名称都能按照这个配置来进行处理。
method属性其中{1}是一个占位符,它会根据动作名称中与通配符*匹配的部分来替换。例如,如果请求的动作名称是smBlsqd_save,那么{1}就会被替换成save,此时实际要调用的方法就是saveSmBlsqd方法。
3.6、配置 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- 配置Struts2过滤器 -->
<filter>
<filter-name>SSHTest</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SSHTest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置Spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定Spring配置文件所在路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
</web-app>
这里当时filter-mapping报错,原因是因为我在项目结构中添加了两个web导致无法识别,需要删掉一个web,而且我项目中有两个web.xml,需要指定一个
3.7、自动生成 hibernate.cfg.xml
在File菜单下的Project Structure中,选择Modules,添加Hibernate

选择hibernate版本,添加配置文件
- 这时项目中多出了一个 hibernate.cfg.xml 配置文件
- 配置好数据库(5.配置数据库)后,hibernate.cfg.xml中,(数据连接URL和驱动会自动增加)配置如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:oracle:thin:@172.27.12.1:1521/orcl</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<mapping class="com.ssh.model.SmBlsqdEntity"/>
<mapping resource="spring/SmBlsqdEntity.hbm.xml"/>
<!-- <property name="connection.username"/> -->
<!-- <property name="connection.password"/> -->
<!-- DB schema will be updated if needed -->
<!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
4.创建JAVA目录,及工程结构
创建的先后顺序无所谓,新建com.ssh目录
4.1、action类
新建action目录
package com.ssh.action;
import com.opensymphony.xwork2.ActionSupport;
import com.ssh.model.SmBlsqdEntity;
import com.ssh.service.SmBlsqdService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import java.util.List;
@Controller
@Scope("prototype")
public class SmBlsqdAction extends ActionSupport {
@Autowired
private SmBlsqdService smBlsqdService;
private String bbmc;
private String zyhm;
private String brxm;
public String getBbmc(){
return bbmc;
}
public void setBbmc(){
this.bbmc = bbmc;
}
public String getZyhm(){
return zyhm;
}
public void setZyhm(){
this.zyhm = zyhm;
}
public String getBrxm(){
return brxm;
}
public void setBrxm(){
this.brxm = brxm;
}
@Override
public void validate(){
if (zyhm == null || "".equals(zyhm.trim())) {
this.addFieldError("zyhm", "住院号码不能为空");
}
}
public String saveSmBlsqd() {
System.out.println(zyhm);
this.addActionMessage("保存成功...");
List<SmBlsqdEntity> smBlsqdList = smBlsqdService.getSmBlsqdList();
this.addActionMessage("从数据库中取出来的标本名称:"+smBlsqdList.get(0).getBbmc());
return SUCCESS;
}
}
4.2、dao类
新建dao目录
package com.ssh.dao;
import com.ssh.model.SmBlsqdEntity;
import java.util.List;
public interface SmBlsqdDao {
public void saveSmBlsqd(SmBlsqdEntity smBlsqd);
public List<SmBlsqdEntity> getSmBlsqdList();
}
4.3、dao.impl类
dao下面新建impl文件夹
package com.ssh.dao.impl;
import com.ssh.dao.SmBlsqdDao;
import com.ssh.model.SmBlsqdEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class SmBlsqdDaoImpl implements SmBlsqdDao {
private HibernateTemplate template;
@Autowired
public SmBlsqdDaoImpl(HibernateTemplate template){
this.template = template;
}
public HibernateTemplate getTemplate() {
return template;
}
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
@Override
public void saveSmBlsqd(SmBlsqdEntity smBlsqd) {
}
@Override
public List<SmBlsqdEntity> getSmBlsqdList() {
List smBlsqdList = getTemplate().find("From SmBlsqdEntity");
return smBlsqdList;
}
}
这里碰到一个小问题,提示无法加载HibernateTemplate的bean,一直查看spring.xml的配置文件发现bean配置没问题,最后发现是项目结构里Spring的框架没有加,可以去添加。
4.4、model类(5.配置数据库完后,自动生成)
新建model目录
package com.ssh.model;
import javax.persistence.*;
import java.sql.Date;
@Entity
@Table(name = "SM_BLSQD", schema = "TZDYQ", catalog = "")
public class SmBlsqdEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "JLXH")
private long jlxh;
@Basic
@Column(name = "MZZY")
private byte mzzy;
@Basic
@Column(name = "MZHM")
private String mzhm;
@Basic
@Column(name = "ZYH")
private Long zyh;
@Basic
@Column(name = "ZYHM")
private String zyhm;
@Basic
@Column(name = "BRXM")
private String brxm;
@Basic
@Column(name = "BRCH")
private String brch;
@Basic
@Column(name = "BRXB")
private Byte brxb;
@Basic
@Column(name = "BRNL")
private String brnl;
@Basic
@Column(name = "BRJG")
private String brjg;
@Basic
@Column(name = "BRZY")
private String brzy;
@Basic
@Column(name = "BRHY")
private String brhy;
@Basic
@Column(name = "BRKS")
private Integer brks;
@Basic
@Column(name = "KSMC")
private String ksmc;
@Basic
@Column(name = "BRBQ")
private Integer brbq;
@Basic
@Column(name = "BQMC")
private String bqmc;
@Basic
@Column(name = "SJDW")
private String sjdw;
@Basic
@Column(name = "BSZY")
private String bszy;
@Basic
@Column(name = "HYSJ")
private String hysj;
@Basic
@Column(name = "LCZD")
private String lczd;
@Basic
@Column(name = "GDY")
private String gdy;
@Basic
@Column(name = "LS_BLJY")
private String lsBljy;
@Basic
@Column(name = "LS_JYRQ")
private Date lsJyrq;
@Basic
@Column(name = "LS_JYHS")
private String lsJyhs;
@Basic
@Column(name = "LS_JYZD")
private String lsJyzd;
@Basic
@Column(name = "LXFS")
private String lxfs;
@Basic
@Column(name = "CXSJ")
private String cxsj;
@Basic
@Column(name = "YJRQ")
private Date yjrq;
@Basic
@Column(name = "KGRQ")
private Date kgrq;
@Basic
@Column(name = "BZ")
private String bz;
@Basic
@Column(name = "SSRQ")
private Date ssrq;
@Basic
@Column(name = "SSTH")
private String ssth;
@Basic
@Column(name = "ZDYS")
private String zdys;
@Basic
@Column(name = "BBMC")
private String bbmc;
@Basic
@Column(name = "SQRQ")
private Date sqrq;
@Basic
@Column(name = "SQKS")
private Long sqks;
@Basic
@Column(name = "SQKSMC")
private String sqksmc;
@Basic
@Column(name = "DYRQ")
private Date dyrq;
@Basic
@Column(name = "DYGH")
private String dygh;
@Basic
@Column(name = "BBSL")
private Byte bbsl;
@Basic
@Column(name = "SQLX")
private Byte sqlx;
@Basic
@Column(name = "SJYS")
private String sjys;
@Basic
@Column(name = "SJRQ")
private Date sjrq;
@Basic
@Column(name = "HCHS")
private String hchs;
@Basic
@Column(name = "HCRQ")
private Date hcrq;
@Basic
@Column(name = "SJGY")
private String sjgy;
@Basic
@Column(name = "SJGYSJ")
private Date sjgysj;
@Basic
@Column(name = "SJHS")
private String sjhs;
@Basic
@Column(name = "SJHSSJ")
private Date sjhssj;
@Basic
@Column(name = "JSGH")
private String jsgh;
@Basic
@Column(name = "JSRQ")
private Date jsrq;
@Basic
@Column(name = "FKNR")
private String fknr;
@Basic
@Column(name = "FKGH")
private String fkgh;
@Basic
@Column(name = "FKRQ")
private Date fkrq;
@Basic
@Column(name = "JCJG")
private String jcjg;
@Basic
@Column(name = "SSBH")
private Long ssbh;
@Basic
@Column(name = "BBBW")
private String bbbw;
@Basic
@Column(name = "SQDDYRQ")
private Date sqddyrq;
@Basic
@Column(name = "SQDDYGH")
private String sqddygh;
@Basic
@Column(name = "SQYS")
private String sqys;
@Basic
@Column(name = "SQYSRQ")
private Date sqysrq;
@Basic
@Column(name = "SJYSXM")
private String sjysxm;
@Basic
@Column(name = "SYBZ")
private Short sybz;
@Basic
@Column(name = "YJSQDXH")
private String yjsqdxh;
@Basic
@Column(name = "HKDZ")
private String hkdz;
@Basic
@Column(name = "ZZKQK")
private String zzkqk;
@Basic
@Column(name = "KQBGFS")
private Integer kqbgfs;
@Basic
@Column(name = "JBGYG")
private String jbgyg;
@Basic
@Column(name = "JBGSJ")
private Date jbgsj;
@Basic
@Column(name = "BBJKFK")
private String bbjkfk;
@Basic
@Column(name = "SFDH")
private Byte sfdh;
@Basic
@Column(name = "BGRQ")
private Date bgrq;
@Basic
@Column(name = "BGSHGH")
private String bgshgh;
@Basic
@Column(name = "FZJC")
private Boolean fzjc;
@Basic
@Column(name = "SSSQDH")
private Integer sssqdh;
@Basic
@Column(name = "TSGR")
private String tsgr;
@Basic
@Column(name = "YWSM")
private Byte ywsm;
@Basic
@Column(name = "HWHC")
private Byte hwhc;
@Basic
@Column(name = "GWSJ")
private Byte gwsj;
@Basic
@Column(name = "BLWJS")
private Byte blwjs;
@Basic
@Column(name = "QCGH")
private String qcgh;
@Basic
@Column(name = "QCSJ")
private Date qcsj;
@Basic
@Column(name = "LYMZZYH")
private String lymzzyh;
@Basic
@Column(name = "JGID")
private String jgid;
@Basic
@Column(name = "JJBZ")
private Byte jjbz;
@Basic
@Column(name = "SQLXMC")
private String sqlxmc;
@Basic
@Column(name = "BBLY")
private Byte bbly;
public long getJlxh() {
return jlxh;
}
public void setJlxh(long jlxh) {
this.jlxh = jlxh;
}
public byte getMzzy() {
return mzzy;
}
public void setMzzy(byte mzzy) {
this.mzzy = mzzy;
}
public String getMzhm() {
return mzhm;
}
public void setMzhm(String mzhm) {
this.mzhm = mzhm;
}
public Long getZyh() {
return zyh;
}
public void setZyh(Long zyh) {
this.zyh = zyh;
}
public String getZyhm() {
return zyhm;
}
public void setZyhm(String zyhm) {
this.zyhm = zyhm;
}
public String getBrxm() {
return brxm;
}
public void setBrxm(String brxm) {
this.brxm = brxm;
}
public String getBrch() {
return brch;
}
public void setBrch(String brch) {
this.brch = brch;
}
public Byte getBrxb() {
return brxb;
}
public void setBrxb(Byte brxb) {
this.brxb = brxb;
}
public String getBrnl() {
return brnl;
}
public void setBrnl(String brnl) {
this.brnl = brnl;
}
public String getBrjg() {
return brjg;
}
public void setBrjg(String brjg) {
this.brjg = brjg;
}
public String getBrzy() {
return brzy;
}
public void setBrzy(String brzy) {
this.brzy = brzy;
}
public String getBrhy() {
return brhy;
}
public void setBrhy(String brhy) {
this.brhy = brhy;
}
public Integer getBrks() {
return brks;
}
public void setBrks(Integer brks) {
this.brks = brks;
}
public String getKsmc() {
return ksmc;
}
public void setKsmc(String ksmc) {
this.ksmc = ksmc;
}
public Integer getBrbq() {
return brbq;
}
public void setBrbq(Integer brbq) {
this.brbq = brbq;
}
public String getBqmc() {
return bqmc;
}
public void setBqmc(String bqmc) {
this.bqmc = bqmc;
}
public String getSjdw() {
return sjdw;
}
public void setSjdw(String sjdw) {
this.sjdw = sjdw;
}
public String getBszy() {
return bszy;
}
public void setBszy(String bszy) {
this.bszy = bszy;
}
public String getHysj() {
return hysj;
}
public void setHysj(String hysj) {
this.hysj = hysj;
}
public String getLczd() {
return lczd;
}
public void setLczd(String lczd) {
this.lczd = lczd;
}
public String getGdy() {
return gdy;
}
public void setGdy(String gdy) {
this.gdy = gdy;
}
public String getLsBljy() {
return lsBljy;
}
public void setLsBljy(String lsBljy) {
this.lsBljy = lsBljy;
}
public Date getLsJyrq() {
return lsJyrq;
}
public void setLsJyrq(Date lsJyrq) {
this.lsJyrq = lsJyrq;
}
public String getLsJyhs() {
return lsJyhs;
}
public void setLsJyhs(String lsJyhs) {
this.lsJyhs = lsJyhs;
}
public String getLsJyzd() {
return lsJyzd;
}
public void setLsJyzd(String lsJyzd) {
this.lsJyzd = lsJyzd;
}
public String getLxfs() {
return lxfs;
}
public void setLxfs(String lxfs) {
this.lxfs = lxfs;
}
public String getCxsj() {
return cxsj;
}
public void setCxsj(String cxsj) {
this.cxsj = cxsj;
}
public Date getYjrq() {
return yjrq;
}
public void setYjrq(Date yjrq) {
this.yjrq = yjrq;
}
public Date getKgrq() {
return kgrq;
}
public void setKgrq(Date kgrq) {
this.kgrq = kgrq;
}
public String getBz() {
return bz;
}
public void setBz(String bz) {
this.bz = bz;
}
public Date getSsrq() {
return ssrq;
}
public void setSsrq(Date ssrq) {
this.ssrq = ssrq;
}
public String getSsth() {
return ssth;
}
public void setSsth(String ssth) {
this.ssth = ssth;
}
public String getZdys() {
return zdys;
}
public void setZdys(String zdys) {
this.zdys = zdys;
}
public String getBbmc() {
return bbmc;
}
public void setBbmc(String bbmc) {
this.bbmc = bbmc;
}
public Date getSqrq() {
return sqrq;
}
public void setSqrq(Date sqrq) {
this.sqrq = sqrq;
}
public Long getSqks() {
return sqks;
}
public void setSqks(Long sqks) {
this.sqks = sqks;
}
public String getSqksmc() {
return sqksmc;
}
public void setSqksmc(String sqksmc) {
this.sqksmc = sqksmc;
}
public Date getDyrq() {
return dyrq;
}
public void setDyrq(Date dyrq) {
this.dyrq = dyrq;
}
public String getDygh() {
return dygh;
}
public void setDygh(String dygh) {
this.dygh = dygh;
}
public Byte getBbsl() {
return bbsl;
}
public void setBbsl(Byte bbsl) {
this.bbsl = bbsl;
}
public Byte getSqlx() {
return sqlx;
}
public void setSqlx(Byte sqlx) {
this.sqlx = sqlx;
}
public String getSjys() {
return sjys;
}
public void setSjys(String sjys) {
this.sjys = sjys;
}
public Date getSjrq() {
return sjrq;
}
public void setSjrq(Date sjrq) {
this.sjrq = sjrq;
}
public String getHchs() {
return hchs;
}
public void setHchs(String hchs) {
this.hchs = hchs;
}
public Date getHcrq() {
return hcrq;
}
public void setHcrq(Date hcrq) {
this.hcrq = hcrq;
}
public String getSjgy() {
return sjgy;
}
public void setSjgy(String sjgy) {
this.sjgy = sjgy;
}
public Date getSjgysj() {
return sjgysj;
}
public void setSjgysj(Date sjgysj) {
this.sjgysj = sjgysj;
}
public String getSjhs() {
return sjhs;
}
public void setSjhs(String sjhs) {
this.sjhs = sjhs;
}
public Date getSjhssj() {
return sjhssj;
}
public void setSjhssj(Date sjhssj) {
this.sjhssj = sjhssj;
}
public String getJsgh() {
return jsgh;
}
public void setJsgh(String jsgh) {
this.jsgh = jsgh;
}
public Date getJsrq() {
return jsrq;
}
public void setJsrq(Date jsrq) {
this.jsrq = jsrq;
}
public String getFknr() {
return fknr;
}
public void setFknr(String fknr) {
this.fknr = fknr;
}
public String getFkgh() {
return fkgh;
}
public void setFkgh(String fkgh) {
this.fkgh = fkgh;
}
public Date getFkrq() {
return fkrq;
}
public void setFkrq(Date fkrq) {
this.fkrq = fkrq;
}
public String getJcjg() {
return jcjg;
}
public void setJcjg(String jcjg) {
this.jcjg = jcjg;
}
public Long getSsbh() {
return ssbh;
}
public void setSsbh(Long ssbh) {
this.ssbh = ssbh;
}
public String getBbbw() {
return bbbw;
}
public void setBbbw(String bbbw) {
this.bbbw = bbbw;
}
public Date getSqddyrq() {
return sqddyrq;
}
public void setSqddyrq(Date sqddyrq) {
this.sqddyrq = sqddyrq;
}
public String getSqddygh() {
return sqddygh;
}
public void setSqddygh(String sqddygh) {
this.sqddygh = sqddygh;
}
public String getSqys() {
return sqys;
}
public void setSqys(String sqys) {
this.sqys = sqys;
}
public Date getSqysrq() {
return sqysrq;
}
public void setSqysrq(Date sqysrq) {
this.sqysrq = sqysrq;
}
public String getSjysxm() {
return sjysxm;
}
public void setSjysxm(String sjysxm) {
this.sjysxm = sjysxm;
}
public Short getSybz() {
return sybz;
}
public void setSybz(Short sybz) {
this.sybz = sybz;
}
public String getYjsqdxh() {
return yjsqdxh;
}
public void setYjsqdxh(String yjsqdxh) {
this.yjsqdxh = yjsqdxh;
}
public String getHkdz() {
return hkdz;
}
public void setHkdz(String hkdz) {
this.hkdz = hkdz;
}
public String getZzkqk() {
return zzkqk;
}
public void setZzkqk(String zzkqk) {
this.zzkqk = zzkqk;
}
public Integer getKqbgfs() {
return kqbgfs;
}
public void setKqbgfs(Integer kqbgfs) {
this.kqbgfs = kqbgfs;
}
public String getJbgyg() {
return jbgyg;
}
public void setJbgyg(String jbgyg) {
this.jbgyg = jbgyg;
}
public Date getJbgsj() {
return jbgsj;
}
public void setJbgsj(Date jbgsj) {
this.jbgsj = jbgsj;
}
public String getBbjkfk() {
return bbjkfk;
}
public void setBbjkfk(String bbjkfk) {
this.bbjkfk = bbjkfk;
}
public Byte getSfdh() {
return sfdh;
}
public void setSfdh(Byte sfdh) {
this.sfdh = sfdh;
}
public Date getBgrq() {
return bgrq;
}
public void setBgrq(Date bgrq) {
this.bgrq = bgrq;
}
public String getBgshgh() {
return bgshgh;
}
public void setBgshgh(String bgshgh) {
this.bgshgh = bgshgh;
}
public Boolean getFzjc() {
return fzjc;
}
public void setFzjc(Boolean fzjc) {
this.fzjc = fzjc;
}
public Integer getSssqdh() {
return sssqdh;
}
public void setSssqdh(Integer sssqdh) {
this.sssqdh = sssqdh;
}
public String getTsgr() {
return tsgr;
}
public void setTsgr(String tsgr) {
this.tsgr = tsgr;
}
public Byte getYwsm() {
return ywsm;
}
public void setYwsm(Byte ywsm) {
this.ywsm = ywsm;
}
public Byte getHwhc() {
return hwhc;
}
public void setHwhc(Byte hwhc) {
this.hwhc = hwhc;
}
public Byte getGwsj() {
return gwsj;
}
public void setGwsj(Byte gwsj) {
this.gwsj = gwsj;
}
public Byte getBlwjs() {
return blwjs;
}
public void setBlwjs(Byte blwjs) {
this.blwjs = blwjs;
}
public String getQcgh() {
return qcgh;
}
public void setQcgh(String qcgh) {
this.qcgh = qcgh;
}
public Date getQcsj() {
return qcsj;
}
public void setQcsj(Date qcsj) {
this.qcsj = qcsj;
}
public String getLymzzyh() {
return lymzzyh;
}
public void setLymzzyh(String lymzzyh) {
this.lymzzyh = lymzzyh;
}
public String getJgid() {
return jgid;
}
public void setJgid(String jgid) {
this.jgid = jgid;
}
public Byte getJjbz() {
return jjbz;
}
public void setJjbz(Byte jjbz) {
this.jjbz = jjbz;
}
public String getSqlxmc() {
return sqlxmc;
}
public void setSqlxmc(String sqlxmc) {
this.sqlxmc = sqlxmc;
}
public Byte getBbly() {
return bbly;
}
public void setBbly(Byte bbly) {
this.bbly = bbly;
}
}
4.5、service类
新建service目录
package com.ssh.service;
import com.ssh.model.SmBlsqdEntity;
import java.util.List;
public interface SmBlsqdService {
public List<SmBlsqdEntity> getSmBlsqdList();
}
4.6、service.impl类
新建service下impl目录
package com.ssh.service.impl;
import com.ssh.dao.SmBlsqdDao;
import com.ssh.model.SmBlsqdEntity;
import com.ssh.service.SmBlsqdService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SmBlsqdServiceImpl implements SmBlsqdService {
@Autowired
private SmBlsqdDao smBlsqdDao;
@Override
public List<SmBlsqdEntity> getSmBlsqdList() {
return smBlsqdDao.getSmBlsqdList();
}
}
4.7、resources.spring(Mapping)(5.配置数据库完后,自动生成)
4.8、webapp.index.jsp
<%--
Created by IntelliJ IDEA.
User: kesteler
Date: 2024-12-02
Time: 15:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title>
</head>
<body>
<h1>新增申请单</h1>
<s:actionmessage/>
<s:form action="smBlsqd_save" method="post" namespace="/" theme="simple">
<table width="600px">
<tr>
<th>标本名称</th>
<td><s:textfield name="bbmc"/></td>
<td><font color="red"><s:fielderror fieldName="bbmc"/></font></td>
</tr>
<tr>
<th>住院号码</th>
<td><s:textfield name="zyhm"/></td>
<td><font color="red"><s:fielderror fieldName="zyhm"/></font></td>
</tr>
<tr>
<th>病人姓名</th>
<td><s:textfield name="brxm"/></td>
<td><font color="red"><s:fielderror fieldName="brxm"/></font></td>
</tr>
<tr>
<th colspan="2">
<input type="submit" value="保存"/>
</th>
<th> </th>
</tr>
</table>
</s:form>
</body>
</html>
5.配置数据库

- 配置数据库后测试连接是否成功,若成功后点击确定

这里有个地方要注意,填了sid后,url那里显示的是1521:orcl,这时候你去测试连接是失败的,需要手动改成'/'才能测试通过。
- 点击窗口中的Persistence
在IDEA左侧找到Persistence,如果没在左侧列表显示,可以去‘‘...’’里查找

- 右键项目,然后点击Generate Persistence Mapping,选择By Database Schema



- 选择数据源,配置实体类包,选择要生成的实体类(其中日期类型的只能手动修改为java.util.Date),然后点击OK


- 手动在resources下面创建包,来管理.hbm.xml
新建spring文件夹,将SmBlsqdEntity.hbm.xml移动到spring文件夹下
6.设置Tomcat


这里遇到一个问题,提示未添加工件,这时候去项目结构中去添加工件,即可解决问题。

运行tomcat时又遇到报错,去localhost的log里查看报错内容,提示
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'smBlsqdDaoImpl' defined in file [D:\老F\My Project\SSH\SSHTest\out\artifacts\SSHTest_war_exploded\WEB-INF\classes\com\ssh\dao\impl\SmBlsqdDaoImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.orm.hibernate4.HibernateTemplate' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
该提示意思就是找不到hibernate4的bean,前面我们刚纠正了,找不到HibernateTemplate的bean的报错,看来还是要去Spring.xml里去看。但是bean肯定是添加了的,这时,我们发现报错的是hibernate4,我们Spring.xml中的是hibernate5,这时回到smBlsqdDaoImpl.java,发现引用的确实是hibernate4,这时将hibernate4改成hibernate5,项目即可正常运行。


1万+

被折叠的 条评论
为什么被折叠?



