项目概要

主要做对数据的增删改查操作

项目条件

框架:spring+springMVC+Mybatis
项目管理工具:Maven
代码编写工具:IntelliJ IDEA 2020.1 x64
数据库:MySQL
数据库工具:Navicat Premium

步骤:

1.在数据库创建表

创建表的 sql


CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `age` int(5) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

2. 创建web项目

选择新建项目,在Maven里选择web项目,填写项目名和包名
在这里插入图片描述
在这里插入图片描述

3.项目目录结构

首次建项目加载比较慢,需要稍等下

查看总项目结构如下:
在这里插入图片描述

4. 在pom.xml文件里添加依赖

在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>com.tmm.test</groupId>
  <artifactId>MyTest</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging> <!-- 打包是以war包的形式-->

  <!--引入阿里私服-->
  <repositories>
    <repository>
      <id>ali</id>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </repository>
  </repositories>

  <!-- 添加此节点mybatis的mapper.xml文件避免被漏掉。 -->
  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>

  <!-- 引入包的版本配置-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>4.1.6.RELEASE</spring.version>
    <mybatis.version>3.3.1</mybatis.version>
  </properties>


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- 引入JSON -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    <!-- 上传组件包 -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.3</version>
    </dependency>

    <dependency>
      <groupId>com.github.sgroschupf</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.1</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.5.1</version>

    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.5.0</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.4.0</version>
    </dependency>

    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <!-- 连接mysql -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.8</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!--jstl表达式-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
  </dependencies>
</project>

5. 写其他配置文件

首先在 mian 目录下,右键新建 resources 文件夹,确保是资源文件
在 resources 文件夹里新建两个xml文件(spring.xml,spring-mvc.xml),和一个配置文件(jdbc.properties)
配置四个xml文件 jdbc.properties,spring.xml,spring-mvc.xml,web.xml

代码:
jdbc.properties


driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\:///test?useUnicode=xxx&characterEncoding=UTF-8 #自己的数据库名称
username=root
password=xxx #自己的数据库密码

#定义初始连接数
initialSize=0  

#定义最大连接数
maxActive=20  

#定义最大空闲
maxIdle=20  

#定义最小空闲
minIdle=1

#定义最长等待时间
maxWait=60000 

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

    <context:annotation-config />

    <!--自动扫描-->
    <context:component-scan base-package="com.tmm.test"></context:component-scan><!-- 注意这里:修改成自己的包名-->


    <!--引入配置文件-->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties"/>
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />

        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>

    <!--spring和MyBatis整合,不需要mybatis的配置映射文件-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--DAO接口包,Spring会自动查找其他下的类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.tmm.test.mapper"/><!-- 注意这里:修改成自己的包名-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

    <!--事务管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>

spring-mvc.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:p="http://www.springframework.org/schema/p"
       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-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    <context:component-scan base-package="com.tmm.test.controller"/>

    <mvc:default-servlet-handler />

    <!--自定义消息转换器的编码,解决后台传输json回前台时,中文乱码问题-->
    <mvc:annotation-driven >
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter" >
                <property name = "supportedMediaTypes">
                    <list>
                        <value>application/json;charset=utf-8</value>
                        <value>text/html;charset=utf-8</value>
                        <!-- application 可以在任意 form 表单里面 enctype 属性默认找到 -->
                        <value>application/x-www-form-urlencoded</value>
                    </list>
                </property>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" ></bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter"/><!-- JSON转换器 -->
            </list>
        </property>
    </bean>

    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--        <property name="prefix" value="/WEB-INF/jsp/"/>-->
        <property name="suffix" value=".jsp"/>
        <property name="prefix" value="/"/>
<!--        <property name="suffix" value=".html"/>-->
    </bean>

    <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8"/>
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000"/>
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960"/>
    </bean>
</beans>

web.xml


<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<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" id="WebApp_ID" version="3.0">

  <display-name>Archetype Created Web Application</display-name>

  <!--Spring和mybatis的配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>

  <!--编码过滤器-->
  <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>
<!--      <param-value>gb2312</param-value>-->
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--spring监听器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--防止Spring内存溢出监听器-->
  <listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>

  <!-- Spring MVC servlet -->
  <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:spring-mvc.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
    <!--async-supported是servlet 3.0后推出的新特性-->
    <async-supported>true</async-supported>
  </servlet>

  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

<!--  设置欢迎页面-->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

6. 分层写代码

在mian下新建包com.tmm.test,在此包下分别新建四个包:

① 新建 entity 包,entity包下再新建实体类 Student
在实体类里将 无参构造函数,有参构造函数,setget方法,toString方法自动生成出来


package com.tmm.test.entity;
import java.io.Serializable;

public class Student implements Serializable {
    private Integer id;
    private String name;
    private Integer age;

    //无参构造函数
    public Student() {
    }

    //有参构造函数
    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    //toString方法
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

② 新建 mapper包,mapper包下新建 StudentMapper类
StudentMapper是一接口,用来写增删改查的方法


package com.tmm.test.mapper;
import com.tmm.test.entity.Student;
import java.util.List;

public interface StudentMapper {
    //查询所有数据
    List<Student> selectAll();

    //根据id删除
    int  delete(int id);

    //根据id修改
    int update(Student student);

    //添加
    int insert(Student student);

    //通过id查找
    Student findById(int id);
}

③ 在mapper包下新建xml文件 StudentMapper.xml
StudentMapper.xml 是mybatis的映射文件。


<?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.tmm.test.mapper.StudentMapper">

    <resultMap id="BaseResultMap" type="com.tmm.test.entity.Student">
        <!--字段-->
        <result column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="age" jdbcType="INTEGER" property="age" />
    </resultMap>

    <parameterMap type="com.tmm.test.entity.Student" id="StudentMap">
        <parameter  property="name" resultMap="BaseResultMap"/>
        <parameter  property="age" resultMap="BaseResultMap"/>
    </parameterMap>

    <sql id="Base_Column_List">
          id,name,age
    </sql>

    <!--查询所有-->
    <select id="selectAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from student
    </select>

    <!--通过id查找-->
    <select id="findById" resultType="com.tmm.test.entity.Student">
       select
        <include refid="Base_Column_List" />
       from student where id =#{id}
    </select>

    <!--删除-->
    <delete id="delete" parameterType="int">
        delete from student where id =#{id}
    </delete>

    <!--修改-->
    <update id="update" parameterMap="StudentMap">
        update student set name=#{name},age=#{age} where id=#{id}
    </update>

    <!--新增-->
    <insert id="insert"  parameterMap="StudentMap">
        insert into student(name,age) values(#{name},#{age})
    </insert>

</mapper>

④ 新建 service,在 service包下新建StudentService类
StudentService是一接口


package com.tmm.test.service;

import com.tmm.test.entity.Student;

import java.util.List;

public interface StudentService {
    //查询所有数据
    public List<Student> selectAll();

    //根据id删除
    public int  delete(int id);

    //根据id修改
    public int update(Student student);

    //添加
    public int insert(Student student);

    //通过id查找
    public Student findById(int id);
}

⑤ 在 service包下,新建 impl包,包里新建 StudentServiceIml
StudentServiceIml 是StudentService类的实现类


package com.tmm.test.service.impl;

import com.tmm.test.entity.Student;
import com.tmm.test.mapper.StudentMapper;
import com.tmm.test.service.StudentService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service("studentService")
public class StudentServiceIml implements StudentService {

    @Resource
    private StudentMapper studentMapper;

    @Override
    public List<Student> selectAll() {
        return studentMapper.selectAll();
    }

    @Override
    public int delete(int id) {
        return studentMapper.delete(id);
    }

    @Override
    public int update(Student student) {
        return studentMapper.update(student);
    }

    @Override
    public int insert(Student student) {
        return studentMapper.insert(student);
    }

    @Override
    public Student findById(int id) {
        return studentMapper.findById(id);
    }
}

⑥ 新建 controller包,包里新建 StudentController类


package com.tmm.test.controller;

import com.tmm.test.entity.Student;
import com.tmm.test.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

@Controller
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentService studentService;

    /**
     * 查询
     * @param model
     * @return
     */
    @RequestMapping("/select")
    public String list(Model model){
        List<Student> student=studentService.selectAll();
        model.addAttribute("student", student);
        return "/show";
    }

    /**
     * 根据id删除
     * @param id
     * @return
     */
    @RequestMapping("/delete/{id}")
    public String delete(@PathVariable int id){ //@PathVariable 映射 URL 绑定的占位符
        int count = studentService.delete(id);
        System.out.println("count:"+count);
        return "redirect:/student/select";
    }

    /**
     * 新增
     * @param student
     * @return
     */
    @RequestMapping("/insert")
    public String insert(Student student){
        studentService.insert(student);
        return "redirect:/student/select";
    }

    /**
     * 跳转修改页面,需要先通过id查找到此条数据
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/toUpdate/{id}")
    public String findById(Model model, @PathVariable int id){
        Student student = studentService.findById(id);
        model.addAttribute("s",student);//通过id查找到此条数据
        return "/update"; //update.jsp页面
    }
    
	/**
     * 修改
     * @param student
     * @return
     */
    @RequestMapping("/update")
    public String update(Student student){
        studentService.update(student);
        return "redirect:/student/select";
    }
}

7. jsp展示数据

main目录下,新建 webapp文件夹,webapp下,新建四个jsp页面
index.jsp — 主页面


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<html>
<head>
    <title>查看表格</title>
</head>
<body>
<div style="margin:0 auto;width:250px;height:50px;">
    <button onclick="window.open('${pageContext.request.contextPath }/student/select');">查看表格</button>
</div>
</body>
</html>

show.jsp —数据展示页面


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
    <div align=center>
        <table border=1 cellpadding=0 cellspacing=0 style='height:40px;width:250px;margin-bottom: 20px;'>
            <tr>
                <th>姓名</th>
                <th>年纪</th>
                <th>操作</th>
            </tr>
            <c:forEach items="${student}" var="student">
                <tr style="text-align:center">
                    <td>${student.name}</td>
                    <td>${student.age}</td>
                    <td>
                        <a href="${pageContext.request.contextPath }/student/delete/${student.id}">删除</a>
                        <a href="${pageContext.request.contextPath }/student/toUpdate/${student.id}">修改</a>
                    </td>
                </tr>
            </c:forEach>
        </table>
        <button onclick="window.open('${pageContext.request.contextPath }/add.jsp');">新增</button>
    </div>
</body>
</html>

③ add.jsp — 新增页面


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>新建数据</title>
</head>
<body>
    <form action="student/insert" method="post">
        姓名:<input type="text" name="name"/><br/>
        年龄:<input type="text" name="age"/><br/>
        <input type="submit"/>
    </form>
</body>
</html>

update.jsp —修改页面


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<%--isELIgnored="false" 表示使用el表达式--%>
<html>
<head>
    <title>数据修改</title>
</head>
<body>
    <div>
        <form action="${pageContext.request.contextPath }/student/update" method="post">
                 <input type="hidden" name="id" value="${s.id}"> <!--id用于识别目前是哪条数据-->
            姓名:<input type="text" name="name" value="${s.name}"/><br/>
            年龄:<input type="text" name="age" value="${s.age}"/><br/>
                 <input type="submit" value="提交">
        </form>
    </div>
</body>
</html>

8. 补充

注意:
若要修改整个项目的包名,以下几个地方是需要修改的

jdbc.properties文件里的配置修改成自己数据库的
包括数据库名和密码

spring.xml文件里的配置
下面两个地方包名修改成自己项目的

<context:component-scan base-package="com.tmm.test"></context:component-scan>
<property name="basePackage" value="com.tmm.test.mapper"/>

spring-mvc.xml文件里的配置
包名修改成自己的

<context:component-scan base-package="com.tmm.test.controller"/>

StudentMapper.xml文件里的配置
下面两个地方包名修改成自己项目的

<mapper namespace="com.tmm.test.mapper.StudentMapper"> <!--这个是mapper文件-->
<resultMap id="BaseResultMap" type="com.tmm.test.entity.Student"> <!--这个是实体文件-->

9. 运行

配置Tomcat服务器,按图操作

在这里插入图片描述
同一页面,继续操作

在这里插入图片描述
配置war包
在这里插入图片描述

点击右上角的绿色箭头按钮,就会跳到之前配置的浏览器页面。

10. 项目源码

GitHub地址:点击这里
码云地址:点击这里

完毕~

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐