搭建SSM架构

在这里插入图片描述

一、准备工作

第一步:创建数据库

Navicat中创建数据库"edu"。

CREATE DATABASE IF NOT EXISTS `edu` DEFAULT CHARACTER SET utf8;

mysql> USE `edu`;

CREATE TABLE `score` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `stuName` VARCHAR(20) DEFAULT NULL,
  `gender` CHAR(1) DEFAULT NULL,
  `courseName` VARCHAR(50) DEFAULT NULL,
  `courseScore` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
Database changed

第二步:在Eclipse中配置tomcat和JRE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、搭建开发环境

第一步:创建maven项目

项目名项目描述
edusys该项目采用springspringMVCMyBatis框架实现学生成绩的增、删、改、查的功能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 至此,Maven项目创建完成,但是其会报错,如下图所示:

在这里插入图片描述
解决办法:

  • 选中项目,右击鼠标显示如图所示:

在这里插入图片描述

  • 问题已解决,如图所示:

在这里插入图片描述

第二步:导入jar包依赖(pom.xml文件)

Maven仓库

序号jar包名解释groupId&artifactId
1pageHelperMyBatis分页插件com.github.pagehelper & pagehelper
2mybatis-generator-coremybatis生成器核心org.mybatis.generator & mybatis-generator-core
3spring mvcspring mvc框架org.springframework & spring-webmvc
4jackson-databindjackson数据绑定com.fasterxml.jackson.core & jackson-databind
5JSR303JSR303数据校验支持org.hibernate & hibernate-validator
6Spring-JdbcSpring-Jdbcorg.springframework & spring-jdbc
7Spring-testSpring-testorg.springframework & spring-test
8spring-aopSpring面向切面编程org.springframework & spring-aop
9aspectjrtrorg.aspectj & aspectjrt
10MyBatisMyBatis框架org.mybatis&mybatis
11mybatis-springMyBatis与Spring的整合包org.mybatis & mybatis-spring
12mysqlMySQL数据库驱动mysql & mysql-connector-java
13数据库连接池数据库连接池com.mchange & c3p0
14JSTLjavax.servlet & jstl
15servlet-api可以来自于tomcat,也可以来自于pom,二者任选其javax.servlet & javax.servlet-api
16jsp-apijavax.servlet.jsp & jsp-api
17上传文件组件commons-fileupload & commons-fileupload
18junitjunit & junit

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>edu</groupId>
  <artifactId>edusys</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
		<!-- 1、pageHelper分页插件 -->
		<!-- <dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.1.11</version>
		</dependency> -->

		<!-- 2、mybatis逆向工程 -->
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.4.0</version>
		</dependency>
 
		<!-- 3、spring mvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.2.8.RELEASE</version>
		</dependency>
 		
		<!-- 4、返回json字符串的支持 -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.10.1</version>
		</dependency>

		<!--5、JSR303数据校验支持 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>6.1.0.Final</version>
		</dependency>

		<!--6、 Spring-Jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.2.0.RELEASE</version>
		</dependency>
    
		<!--7、Spring-test -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>5.2.0.RELEASE</version>
			<scope>test</scope>
		</dependency>
 
		<!-- 8、Spring面向切面编程 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>5.2.0.RELEASE</version>
		</dependency>
		
		<!-- 9.  -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.9.5</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.9.5</version>
		</dependency>

		<!--10、MyBatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.2</version>
		</dependency>

		<!-- 11、MyBatis与Spring的整合包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.3</version>
		</dependency>
 
		<!--12、 数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.48</version>
		</dependency>
 
		<!-- 13、数据库连接池 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.4</version>
		</dependency>
		
		<!-- 14、JSTL -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- 15、servlet-api可以来自于tomcat,也可以来自于pom,二者任选其一 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency> 

		<!-- 16、jsp-api可以来自于tomcat,也可以来自于pom,二者任选其一 -->
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.2</version>
			<scope>provided</scope>
		</dependency>

		<!-- 17、上传文件组件 -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- 18、junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13</version>
			<scope>test</scope>
		</dependency>	
 	</dependencies>
  
</project>

第三步:启动spring容器(web.xml文件)

启动spring容器就是启动下图中最大框所示的spring容器。
在这里插入图片描述
web.xml中添加监听器来启动spring容器,启动代码是固定写法。
web.xmlalt+/打开提示面板,选择倒数第三项用于配置启动spring容器。
在这里插入图片描述
添加完成之后如下图所示:
在这里插入图片描述

1、配置代码如下

<!-- 1、启动spring容器 -->
<!-- needed for ContextLoaderListener -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

	<!-- Bootstraps the root web application context before servlet initialization -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

2、代码解析

  • (1)param-value用于设置spring框架的配置文件。
  • (2)classpath:表示类路径,classpath对应到maven骨架的src/main/resources目录。
  • (3)applicationContext.xmlspring框架的配置文件,spring在运行期间就会按照applicationContext.xml配置的内容运行。

3、创建spring框架的配置文件

src/main/resources目录下创建spring配置文件,名称为applicationContext.xml

在这里插入图片描述
选择:aop、beans、context、tx
在这里插入图片描述
目录结构:
在这里插入图片描述

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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	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/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

	
</beans>

第四步:启动SpringMVC框架(web.xml文件)

启动springMVC就是启动如下图控制器部分。
在这里插入图片描述
启动springMVC是在web.xml中通过配置启动的。
web.xmlalt +/ 在提示面板中选择倒数第二项,如下图所示
在这里插入图片描述
目录结构:
在这里插入图片描述

1、配置代码

web.xml

 <!-- 2、启动springMVC -->
	<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>location</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>url</url-pattern>
	</servlet-mapping>

对默认的配置做如下改动
1:修改springmvc配置文件的存储位置和文件名称
2:设置映射路径的入口
修改后的配置如下

<!-- 2、启动springMVC -->
<servlet>
	<servlet-name>springDispatcherServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:springmvc.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springDispatcherServlet</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

2.代码解析

(1)param-value用于设置springMVC框架的配置文件。
(2)classpath:表示类路径,classpath对应到maven骨架的src/main/resources目录
(3)springmvc.xmlspringMVC框架的配置文件,springMVC在运行期间就会按照springmvc.xml配置的内容运行。

3.创建springmvc的配置文件

src/main/resources目录下创建springMVC配置文件,名称为springmvc.xml

在这里插入图片描述
选择:benas、context、mvc
在这里插入图片描述

在这里插入图片描述
目录结构
在这里插入图片描述

springMVC配置文件原码:

<?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:mvc="http://www.springframework.org/schema/mvc"
	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-4.3.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

</beans>

第五步:设置编码过滤器(web.xml文件)

Spring框架提供了一个过滤器,名称是org.springframework.web.filter. CharacterEncodingFilter
这个过滤器专门用于控制乱码的情况,我们只需要在web.xml中对这个监听器配置即可。

<!-- 3、编码过滤器 -->
<filter>
  	<filter-name>character</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>
</filter>
<filter-mapping>
  	<filter-name>character</filter-name>
  	<url-pattern>*</url-pattern>
 </filter-mapping>

第六步:创建数据库连接字符串配置文件

src/main/resourcs目录下创建名称为db.properties文件,该文件用于配置数据库连接信息。
具体配置如下
目录结构:
在这里插入图片描述

数据库连接字符串配置文件原码:

db.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc\:mysql\://localhost\:3306/luasedu1?characterEncoding=utf-8
jdbc.user=root
jdbc.password=root
jdbc.initialPoolSize=10
jdbc.maxPoolSize=100
jdbc.minPoolSize=10
jdbc.acquireIncrement=10

第七步:配置spring框架的配置文件

spring框架的配置文件为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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	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/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

	<!-- 第一项配置:创建service的bean对象,创建dao的bean对象 -->
	<context:component-scan base-package="cn.edu.services;cn.edu.dao"></context:component-scan>

	<!-- 第二项配置:加载数据库连接字符串,创建数据源 -->
	<context:property-placeholder location="classpath:db.properties"/>
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<!-- 初始化时的连接数,取值应该在maxPoolSize和minPoolSize之间,默认是3 -->
		<property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
		<!-- 连接池中保留的最大连接数量,默认15 -->
		<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
		<!-- 连接池中保留的最小连接数量,默认3 -->
		<property name="minPoolSize" value="${jdbc.minPoolSize}"></property>
		<!-- 当连接池中的连接耗尽的时候,c3p0一次同时获取的连接数,默认3 -->
		<property name="acquireIncrement" value="${jdbc.acquireIncrement}"></property>
	</bean>
	
	<!-- 第三项配置:spring整合mybatis -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 3.1注入数据源 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 3.2注入配置文件 -->
		<property name="configLocation" value="classpath:mybatisConfig.xml"></property>
		<!-- 3.3注入映射文件 -->
		<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
	</bean>
	<!-- 将mybatis生成的dao的代理对象交给spring容器管理 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="cn.edu.dao"></property>
	</bean>
	
	<!-- 第四项配置:声明式事务 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<aop:config>
		<aop:pointcut expression="execution(* cn.edu.services..*(..))" id="txPoint"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
	</aop:config>
	<tx:advice id="txAdvice">
		<tx:attributes>
			<tx:method name="*" propagation="REQUIRED"/>
			<tx:method name="select*" read-only="true"/>
		</tx:attributes>
	</tx:advice>
</beans>
</beans>

第八步:配置springMVC的配置文件

Springmvc框架的配置文件`springmvc.xml``的包含如下:

  • (1)负责创建Controller对象
  • (2)配置注解驱动
  • (3)配置视图解析器
  • (4)配置静态资源访问
<?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:mvc="http://www.springframework.org/schema/mvc"
	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-4.3.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<!-- 配置1:负责创建Controller对象 -->
	<context:component-scan base-package="cn.edu.controller"></context:component-scan>
	
	<!-- 配置2:配置注解驱动-->
	<mvc:annotation-driven />
	
	<!-- 配置3:配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	<!-- 配置4:配置静态资源访问 -->
	<mvc:default-servlet-handler/>
	
</beans>

第九步:mybatis框架的配置文件

Mybatis配置文件在classpath目录下,名称为mybatisConfig.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>
	<typeAliases>
		<package name="cn.edu.models"/>
	</typeAliases>
</configuration>

第十一步:mybatis的映射文件

Mybatis的映射文件都存放在classpath(rc/main/rescources)目录下的mapper目录下。
目前项目中有一张表,名称是score,因此为score表创建一个映射文件,命名为score.xml
目录结构:
在这里插入图片描述

Score.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="org.mybatis.example.BlogMapper">
  
</mapper>

第十二步:配置日志文件

首先创建log4j日志的配置文件,放在src/main/rescources目录下,命名为log4j.properties

目录结构
在这里插入图片描述

log4j.properties配置内容如下:

log4j.properties

log4j.rootLogger=debug,stdout,file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = d\:/logs/ssm.log
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.name = fileLogDemo
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n
log4j.appender.file.append = true

第十三步:分包

根据包的规范,将所有的包都创建出来

控制器包业务包Dao包Models包
cn.edu.controllercn.edu.servicescn.edu.daocn.edu.models

注意:

  • 到此为止,项目的架构搭建完成,后续的添加学生成绩,查询成绩等业务都需要在这个基础上进行开发。
  • 分包时是按照功能分类的。

测试搭建是否成功

创建一个helloworld程序,根据helloword运行结果判断搭建是否成功
第一步:在cn.edu.controller包中创建控制器类,命名为HelloWorld。代码如下
在这里插入图片描述

package cn.edu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorld {
	@RequestMapping("/hello")
	public String hello(Model model) {
		model.addAttribute("message", "hello world");
		return "hello";
	}
}

第二步:在WEB-INF/views目录中创建hello.jsp文件,hello.jsp文件内容如下
在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
	您好!${message}
</body>
</html>

在这里插入图片描述

第三步:在浏览器中测试hello
输入网址如下

http://localhost:8080/luas/hello

在这里插入图片描述

三、业务开发

3.1、保存成绩业务

SSM项目如何连接数据库

连接数据库的信息都在db.properties配置文件中,要保证配置正确。

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc\:mysql\://localhost\:3306/luasedu1?characterEncoding=utf-8
jdbc.user=root
jdbc.password=root
jdbc.initialPoolSize=10
jdbc.maxPoolSize=100
jdbc.minPoolSize=10
jdbc.acquireIncrement=10

业务实现流程:

界面上需要填写4个数据,分别是学生姓名,性别,课程名称,课程成绩。

这四个数据需要从界面传递到controller,从controller传递到services,从services传递到daodao调用mybatis,由mybatis将数据添加入库。

数据传递最优设计是使用实体类的对象进行传输。你可以将实体类对象理解为一个箱子,我们将要传输的数据放到箱子中,然后你只需要将这个箱子传递到dao就实现了将四个数据都传递到dao了。

在编程的领域中将这个专门传输数据的箱子称为实体类通常实体类的类名与表名一致,实体类的属性名称和属性类型与表的列名称和列类型一致。

存放实体类的包通常叫做models或者叫做entity
实体类的类名建议使用表名+Model,或者表名+Entity

第1步:创建实体类

数据使用实体类从界面传输到dao
创建实体类ScoreModel.java

package cn.edu.models;

public class ScoreModel {
	private int id;
	private String stuName;
	private String gender;
	private String courseName;
	private String courseScore;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getCourseName() {
		return courseName;
	}
	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}
	public String getCourseScore() {
		return courseScore;
	}
	public void setCourseScore(String courseScore) {
		this.courseScore = courseScore;
	}
	
}

注意:实体类的属性要与数据库中score表的列要相互对应。

第2步:声明dao的接口

cn.edu.dao包中定义接口,命名为ScoreDao,该接口专门与用于操作score表。例如向score表中添加成绩,查询成绩,删除成绩,修改成绩。
现在在ScoreDao接口中定义添加成绩的方法。

ScoreDao接口原码:

package cn.edu.dao;

import cn.edu.models.ScoreModel;

public interface ScoreDao {
//	添加成绩
	public abstract void insert(ScoreModel scoreModel);

}

解析:
接口中insert方法表示向score表添加成绩
Insert方法的参数ScoreModel表示从界面传递过来的数据.

第3步:定义mybatis映射文件

Mybatis的映射文件被存放在resources目录下的mapper目录下,名称为score.xml
score.xml在配置添加成绩时,必须保证四个规范与接口完全对应。

  • (1)mappernamespace的值必须是接口的完全限定名一致
  • (2)insert标签的id的值必须与接口中方法的名称一致
  • (3)insert标签中的parameterType的值必须与接口中方法的参数类型一致
  • (4)insert标签中的resultType的值必须与接口中方法的返回值一致

score.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="cn.edu.dao.ScoreDao">
	<insert id="insert" parameterType="cn.edu.models.ScoreModel">
  		INSERT INTO score(stuName,gender,courseName,courseScore)VALUES (#{stuName,},#{gender},#{courseName},#{courseScore})
	</insert>
	
</mapper>

第4步:创建业务类ScoreService

业务类的类名应该是 表名+Service
因此score表的业务类名称为ScoreServices

该类定义如下:

package cn.edu.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.edu.dao.ScoreDao;
import cn.edu.models.ScoreModel;

@Service
public class ScoreService {
	@Autowired
	private ScoreDao scoreDao;

	public void insert(ScoreModel scoreModel) {
		scoreDao.insert(scoreModel);
	}
}

解析
(1)业务类上必须标注@Service注解,只有标注了@Service注解了类,spring才认为是业务类。
(2)ScoreService需要ScoreDao来保存数据,因此将ScoreDao定义为ScoreService的属性,该属性需要从spring中注入对象,因此在该属性上标注@Autowired即可。

第5步:定义Controller

控制器类建议使用 表名+Controller命名。因此Score表的控制器定义为ScoreController

代码如下:

package cn.edu.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.edu.models.ScoreModel;
import cn.edu.services.ScoreService;

@Controller
@RequestMapping("/score")
public class ScoreController {
	@Autowired
	private ScoreService scoreService;
	
	//用于显示添加界面的方法
	@RequestMapping("/preparedInsert")
	public String preparedInsert() {
		return "score/insert";
	}
	
	//用于添加成绩的方法
	@RequestMapping("/insert")
	public String insert(@Validated ScoreModel scoreModel,BindingResult br,Model model) {
		System.out.println(scoreModel.getStuName());
		
		if(br.hasErrors()) {
			List<FieldError> errors = br.getFieldErrors();
			for(int i = 0;i<errors.size();i++) {
				String fielId = errors.get(i).getField();
				String message = errors.get(i).getDefaultMessage();
				model.addAttribute(fielId,message);
			}
			model.addAttribute("scoreModel", scoreModel);
			return "score/insert";
		}
		
		scoreService.insert(scoreModel);
		return "redirect:/score/preparedInsert";//成绩添加完成后,跳转到添加成绩界面
	}

}

第6步:界面的代码

WEB-INF/score/insert.jsp是添加成绩的界面

代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert</title>
</head>
<body>
	添加学生成绩
	<br>
	<form action="${pageContext.request.contextPath }/score/insert" method="post">
		学生姓名<input type="text" name="stuName" /><br /> 
		学生性别<input type="radio" name="gender" value=""><input type="radio" name="gender" value=""><br> 
		课程名称<input type="text" name="courseName"><br> 
		课程成绩<input type="number" name="courseScore"><br> 
		<input type="submit" value="保存成绩">
	</form>
</body>
</html>

单元测试:
在Tomcat服务其中启动项目edusys.
在浏览器中输入:
http://localhost:9090/edusys/score/preparedInsert在这里插入图片描述
在这里插入图片描述

3.2、查询成绩业务

3.3、更新成绩业务

3.4、删除成绩业务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值