1 构建maven项目
构建maven项目,在我之前的学习记录里已经描述了如何构建,在这里就不在重复叙述。如果构建maven项目请点击这里:构建maven项目。
2 添加jar包依赖
构架ssm框架需要添加springMvc、mybatis、spring等依赖,除此之外还可以添加如数据库连接、连接池、日志、json等jar包的依赖以及jetty插件。
pom.xml的具体配置如下:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ssm</groupId>
<artifactId>ssm-demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>ssm-demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.17.RELEASE</spring.version>
</properties>
<dependencies>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- springMVC 相关jar -->
<!-- 记录程序运行时的活动的日志记录 -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- SpringMVC框架相关,包括Servlets,Web MVC框架以及控制器和视图支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!-- Spring 框架基本的核心工具类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!-- 为Spring 核心提供了大量扩展 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<!-- 使用Spring 的AOP 特性时所需的类和源码级元数据支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<!-- 包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<!-- spring表达式语言 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<!-- 包含Web 应用开发时,用到Spring 框架时所需的核心类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- Spring 对JDBC 数据访问进行封装的所有类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<!-- spring 事务处理 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<!-- Spring对于object/xml映射的支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<!-- Spring Context的支持,用于MVC方面 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- 对象关系映射 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.10.1.RELEASE</version>
</dependency>
<!-- mybatis -->
<!-- 实现mybatis框架的工具包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- 集合spring与mybatis框架的工具包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql数据库连接包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- c3p0数据库连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- json -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- 解决spring依赖的版本问题 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>ssm-demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.2.v20140723</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
3 ssm框架的相关配置文件
3.1 ssm项目的目录结构
其中,xml文件夹是存放所有xml的配置文件,properties存放所有.properties文件。
3.2 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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 引入注解 -->
<context:annotation-config />
<!-- 注解驱动 -->
<mvc:annotation-driven/>
<!-- class annotation -->
<context:component-scan base-package="com.f.*.controller"/>
<!-- 视图解释器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
</beans>
3.3 mybatis-db.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 支持classpath和file寻址方式: -->
<value>classpath:config/properties/jdbc.properties</value>
</list>
</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://${jdbc.host}:${jdbc.port}/${jdbc.database}?useSSL=false&useUnicode=true&characterEncoding=utf8" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->
<property name="acquireIncrement" value="${acquireIncrement}" />
<!-- 初始化连接数-->
<property name="initialPoolSize" value="${initialPoolSize}" />
<!-- 连接池保留的最大连接数 -->
<property name="maxPoolSize" value="${maxPoolSize}" />
<!-- 连接池保留的最小连接数 -->
<property name="minPoolSize" value="${minPoolSize}" />
<!-- PreparedStatements缓存的大小 -->
<property name="maxStatements" value="${maxStatements}" />
<!-- 为true,每次从连接池中获取一个连接时就进行测试,如果测试连接有问题就关闭重新获取 -->
<property name="testConnectionOnCheckout" value="true" />
</bean>
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/><!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
<property name="configLocation" value="classpath:config/xml/mybatis-config.xml"/>
</bean>
<!-- Mapper动态代理开发 扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 基本包 -->
<property name="basePackage" value="com.f.ssm.mapper"/>
</bean>
<!-- 定义SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
3.4 mybatis-config.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!--将积极加载改为消极加载及按需加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启驼峰规则与下划线间的映射关系 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 别名配置 -->
<typeAliases>
<package name="com.f.ssm.model"/>
</typeAliases>
</configuration>
3.5 properties文件配置
jdbc.host=127.0.0.1
jdbc.database=school
jdbc.port=3306
jdbc.username=root
jdbc.password=root
acquireIncrement=1
initialPoolSize=10
maxPoolSize=50
minPoolSize=5
maxStatements=100
log4j.properties:
# Global logging configuration
log4j.rootLogger = DEBUG,Console,Stdout
# 控制台输出
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 %c:%L - %m%n
#[Level] DEBUG
log4j.logger.java.sql.ResultSet = INFO
log4j.logger.org.apache = INFO
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
# log
log4j.logger.com.fx.springRedis.mapper = DEBUG
log4j.logger.com.fx.springRedis.controller = DEBUG
log4j.logger.com.fx.springRedis.service = DEBUG
#输出到文件
log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Stdout.File = E://logs/log.log
log4j.appender.Stdout.Append = true
log4j.appender.Stdout.Threshold = DEBUG
log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c:%L - %m%n
3.6 applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!-- 采用注释的方式配置bean -->
<context:annotation-config />
<!-- 自动扫描注解 -->
<context:component-scan base-package="com.f.ssm" />
<!-- 在bean容器中配置log4j -->
<bean id="log4jInitialization"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass"
value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>classpath:config/properties/log4j.properties</value>
</list>
</property>
</bean>
<!--导入mybatis配置 -->
<import resource="config/xml/mybatis-db.xml"/>
</beans>
3.7 web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/xml/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
4 项目测试
ssm框架搭建完毕,在这里通过学生与班级的关系进行项目的测试,分别测试学生与班级的增删改查操作。学生与班级的关系是一对多的关系,mybatis要进行一对多的配置。
4.1 创建实体类
学生(省略了构造函数与get、set方法):
private Integer id;//学生表主键
private String name;//学生名字
private String sex;//学生性别
private Integer age;//学生年龄
private String address;//学生家庭住址
private Classes classes;//班级
班级(省略了构造函数与get、set方法):
private Integer id;//班级编号
private String className;//班级名称
private List<Student> studentList;//学生集合
4.2 配置mapper及配置文件
StudentMapper.java:
package com.f.ssm.mapper;
import java.util.List;
import com.f.ssm.model.Student;
/**
* @author 作者姓名
* @version 创建时间:2018年5月30日 下午3:14:50
*
*/
public interface StudentMapper {
/**
* 插入student信息
* @param student
* @throws Exception
*/
void saveStudent(Student student) throws Exception;
/**
* 更新student信息
* @param student
* @throws Exception
*/
void updateStudent(Student student) throws Exception;
/**
* 通过id获取student信息
* @param id
* @return
* @throws Exception
*/
Student getStudentById(Integer id) throws Exception;
/**
* 获取所有student信息
* @return
* @throws Exception
*/
List<Student> getAllStudent() throws Exception;
/**
* 根据id删除学生信息
* @param id
* @throws Exception
*/
public void deleteStudent(Integer id) throws Exception;
}
StudentMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.f.ssm.mapper.StudentMapper">
<!-- 设置结果集,映射学生的基本信息和对应的班级信息 -->
<resultMap type="Student" id="StudentMap">
<!-- 学生自身属性与数据库字段的映射 -->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="age" property="age"/>
<result column="address" property="address"/>
<!-- association处理多对一或一对一关系 -->
<!-- 注:javaType必须指定,表示classes的类型是Classes -->
<association property="classes" javaType="Classes" >
<!-- 班级自身属性与数据库字段的映射 -->
<id column="class_id" property="id"/>
<result column="class_name" property="className"/>
</association>
</resultMap>
<!-- 保存学生信息 -->
<insert id="saveStudent">
insert into student (name,sex,age,address,class_id)
value (#{name},#{sex},#{age},#{address},#{classes.id})
</insert>
<!-- 更新学生信息 -->
<update id="updateStudent">
update student set
name = #{name},
sex = #{sex},
age = #{age},
address = #{address},
class_id = #{classes.id}
where id = #{id}
</update>
<!-- 通过id查找学生信息 -->
<select id="getStudentById" resultMap="StudentMap" parameterType="Integer">
select s.id,s.name,s.sex,s.age,s.address,c.id as class_id,c.class_name
from student s,classes c where s.id = #{id} and c.id = s.class_id
</select>
<!-- 获取所有学生信息 -->
<select id="getAllStudent" resultMap="StudentMap">
select s.*,c.id as class_id,c.class_name from student s,classes c
</select>
<delete id="deleteStudent" parameterType="Integer">
delete from student where id = #{id}
</delete>
</mapper>
ClassesMapper.java:
package com.f.ssm.mapper;
/**
* @author f
* @version 创建时间:2018年6月1日 上午10:50:55
* classesMapper接口
*/
import java.util.List;
import com.f.ssm.model.Classes;
public interface ClassesMapper {
/**
* 通过id查询
* @param id
* @return
*/
public Classes getClassesById(Integer id);
/**
* 获取班级信息
* @return
*/
public List<Classes> getAllClasses(Classes classes);
/**
* 插入班级信息
* @param classes
*/
public void saveClasses(Classes classes);
/**
* 更新班级信息
* @param classes
*/
public void updateClasses(Classes classes);
/**
* 根据删除信息
* @param id
*/
public void delateClasses(Integer id);
}
ClassesMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.f.ssm.mapper.ClassesMapper">
<!-- 设置结果集,映射班级信息与学生对应信息 -->
<resultMap type="Classes" id="ClassesMap">
<!-- 班级自身属性与数据库字段的映射 -->
<id column="id" property="id" />
<result column="class_name" jdbcType="VARCHAR" property="className"/>
<!-- collection处理一对多关系 -->
<collection property="studentList" ofType="Student">
<id column="student_id" property="id"/>
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="age" property="age"/>
<result column="address" property="address"/>
</collection>
</resultMap>
<sql id="Column_List">
c.*,s.id as student_id,s.name,s.sex,s.age,s.address
</sql>
<sql id="Table_List">
classes c left join student s on c.id = s.class_id
</sql>
<sql id="Where_Clause">
where 1=1
<if test="id!=null and id!=''">and c.id = #{id}</if>
<if test="className!=null and className!=''">and c.class_name = #{className}</if>
</sql>
<!-- 通过id查找班级信息 -->
<select id="getClassesById" resultMap="ClassesMap" parameterType="Integer">
select <include refid="Column_List"/>
from <include refid="Table_List"/>
where c.id = #{id}
</select>
<!-- 条件查询班级信息 -->
<select id="getAllClasses" resultMap="ClassesMap" parameterType="Classes">
select <include refid="Column_List"/>
from <include refid="Table_List"/>
<include refid="Where_Clause"/>
</select>
<insert id="saveClasses">
insert into classes (class_name) value(#{className})
</insert>
<update id="updateClasses">
update classes set class_name = #{className} where id = #{id}
</update>
<delete id="deleteClasses">
delete from classes where id = #{id}
</delete>
</mapper>
4.3 service层
本文只贴出service的实现类,其接口不在重复贴出。
StudentServiceImpl.java:
package com.f.ssm.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.f.ssm.mapper.StudentMapper;
import com.f.ssm.model.Student;
import com.f.ssm.service.StudentService;
/**
* @author 作者姓名
* @version 创建时间:2018年5月31日 下午2:54:21
* 类说明
*/
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
/**
* 添加学生
*/
@Override
public void saveStudent(Student student) throws Exception {
studentMapper.saveStudent(student);
}
/**
* 更新学生
*/
@Override
public void updateStudent(Student student) throws Exception {
studentMapper.updateStudent(student);
}
/**
* 通过id获取学生信息
*/
@Override
public Student getStudentById(Integer id) throws Exception {
return studentMapper.getStudentById(id);
}
/**
* 获取所有学生信息
*/
@Override
public List<Student> getAllStudent() throws Exception {
return studentMapper.getAllStudent();
}
/**
* 删除学生
*/
@Override
public void deleteStudent(Integer id) throws Exception {
studentMapper.deleteStudent(id);
}
}
ClassesServiceImpl.java:
package com.f.ssm.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.f.ssm.mapper.ClassesMapper;
import com.f.ssm.model.Classes;
import com.f.ssm.service.ClassesService;
/**
* @author f
* @version 创建时间:2018年6月1日 上午11:01:06
* 类说明
*/
@Service
public class ClassesServiceImpl implements ClassesService {
@Autowired
private ClassesMapper classesmapper;
@Override
public Classes getClassesById(Integer id) {
return classesmapper.getClassesById(id);
}
@Override
public List<Classes> getAllClasses(Classes classes) {
return classesmapper.getAllClasses(classes);
}
@Override
public void saveClasses(Classes classes) {
classesmapper.saveClasses(classes);
}
@Override
public void updateClasses(Classes classes) {
classesmapper.updateClasses(classes);
}
@Override
public void deleteClasses(Integer id) {
classesmapper.delateClasses(id);
}
}
4.4 controller层
StudentController.java:
package com.f.ssm.controller;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.f.ssm.model.Student;
import com.f.ssm.service.StudentService;
/**
* @author f
* @version 创建时间:2018年6月5日 上午8:35:18
* Student业务控制
*/
@Controller
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentService studentService;
private final Log Logger = LogFactory.getLog(this.getClass());
/**
* 添加学生信息
* @param student
* @return
* @throws Exception
*/
@RequestMapping("/save")
@ResponseBody
public String saveStudent(Student student) throws Exception {
studentService.saveStudent(student);
return student.toString();
}
/**
* 更新学生信息
* @param student
* @return
* @throws Exception
*/
@RequestMapping("/update")
@ResponseBody
public String updateStudent(Student student) throws Exception{
studentService.updateStudent(student);
return student.toString();
}
/**
* 根据id查找学生信息
* @param id
* @return
* @throws Exception
*/
@RequestMapping("/getStudentById/{id}")
@ResponseBody
public String getStudentById(@PathVariable("id") Integer id) throws Exception{
return studentService.getStudentById(id).toString();
}
@RequestMapping("/getAllStudent")
@ResponseBody
public Object getAllStudent() throws Exception{
List<Student> students = studentService.getAllStudent();
for(Student s : students) {
Logger.debug(s.toString());
}
return students;
}
@RequestMapping("/deleteStudent")
@ResponseBody
public String deleteStudent(@RequestParam("id") Integer id) throws Exception{
studentService.deleteStudent(id);
return "delete:" + id;
}
}
ClassessController.java:
package com.f.ssm.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.f.ssm.model.Classes;
import com.f.ssm.service.ClassesService;
/**
* @author f
* @version 创建时间:2018年6月8日 下午1:06:36
* 类说明
*/
@Controller
@RequestMapping("/classes")
public class ClassessController {
@Autowired
private ClassesService classesService;
/**
* 保存班级信息
* @param classes
* @return
*/
@RequestMapping("/save")
public String saveClasses(Classes classes) {
classesService.saveClasses(classes);
return "forward:/classes/getAllClasses";
}
/**
* 更新班级信息
* @param classes
* @return
*/
@ResponseBody
@RequestMapping("/update")
public String updateClasses(Classes classes) {
classesService.updateClasses(classes);
return "forward:/classes/getAllClasses";
}
/**
* 根据Id查询信息
* @param id
* @return
*/
@ResponseBody
@RequestMapping("/getClassesById/{id}")
public Object getClassesById(@PathVariable Integer id) {
return classesService.getClassesById(id);
}
/**
* 条件查询班级信息
* @param classes
* @return
*/
@ResponseBody
@RequestMapping("/getAllClasses")
public Object getAllClasses(Classes classes) {
return classesService.getAllClasses(classes);
}
/**
* 根据id删除班级信息
* @param id
* @return
*/
@ResponseBody
@RequestMapping("/delete")
public String deleteClasses(@RequestParam Integer id) {
classesService.deleteClasses(id);
return "redirect:/classes/getAllClasses";
}
@RequestMapping("/test")
public String test() {
//return "redirect:/classes/getAllClasses";
return "main";
}
}
5 测试
本文采用apache jmeter进行测试,版本为3.3。选择部分功能进行测试:
源代码链接:https://github.com/yongmingyongye/ssm-demo