Student information management system based on Spring MVC + Spring + MyBatis

Resource download: https://download.csdn.net/download/weixin_44893902/45603211

Exercise point design: fuzzy query, delete, add

1, Language and environment

  1. Implementation language: JAVA language.
  2. Environment requirements: MyEclipse/Eclipse + Tomcat + MySql.
  3. Use technology: Jsp+Servlet+JavaBean or spring MVC + Spring + mybatis.

2, Realize function

With the development of digital information, it is necessary to make a student information management system. The main functions are as follows:
1. The home page displays all student information by default, as shown in Figure 1.

2. When the mouse hovers over a row of data, the light bar effect is displayed in linear transition animation, as shown in Figure 2.

3. Enter the student name and click query to complete the fuzzy query and display the query results, as shown in Figure 3.

4. When the user clicks delete, a prompt box will pop up. After the user clicks OK, the selected data will be deleted and the latest data will be displayed, as shown in Figure 4 and figure 5.

5. The user clicks the "add" button to open the new page. After filling in the relevant information, click the Add button to add the student information data to the database, and the page jumps to the list page to display the latest data, as shown in Figure 6 and Figure 7.

3, Database design

1. Create a database (stu_db).
2. Create a data table (student) with the following structure.

Field nameexplainField typelengthremarks
idnumberintPrimary key, auto increment
nameStudent namevarchar50Cannot be empty
ageAgeintCannot be empty
classesClass namevarchar50Cannot be empty
birthdate of birthdateCannot be empty

4, Recommended implementation steps

1. The implementation steps of SSM version are as follows:

(1) Create database and data table and add test data (add at least 4 test data).
(2) Create a Web project, create various packages, and import the jar files required by the project.
(3) Add relevant SSM framework support.
(4) Various configuration files required by the configuration project (mybatis configuration file, spring configuration file, spring MVC configuration file).
(5) Create an entity class.
(6) Mapper interface required to create MyBatis operation database and its Xml mapping database operation statement file.
(7) Create corresponding interfaces and implementation classes of business logic, implement corresponding businesses, and add references and injections to DAO/Mapper in the classes.
(8) Create the Controller class, add reference and injection to the business logic class in the Controller, and configure the spring MVC configuration file.
(9) Create relevant operation pages and beautify the pages with CSS.
(10) Realize various operation functions of the page and verify them in relevant places. The operation should be humanized.
(11) After debugging and running successfully, export relevant database files and submit them.

5, Implementation code

1. MySQL database

stu_db.sql

2. Project Java code

directory structure

student

JAR package:

src

com.controller

StudentController.java

package com.controller;

import java.util.List;

import javax.annotation.Resource;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.dao.StudentMapper;
import com.entity.Student;
import com.service.StudentService;

@Controller
public class StudentController {
	@Resource
	StudentService service;
	@RequestMapping("/selectStudent")
	public ModelAndView selectStudent(String keyword) {
		List<Student> studentList=service.selectAll(keyword);
		if (keyword==null||keyword.trim().equals("")) {
			keyword="";
		}
		System.out.println("123456");
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("studentList", studentList);
		modelAndView.setViewName("student");
		return modelAndView;
	}
	
	@RequestMapping("/delStudent")
	public String delStudent(int id) {
		int del=service.delStudent(id);
		return "redirect:/selectStudent.do";
	}
	
	@RequestMapping("/jumpInsert")
	public String jumpInsert() {
		return "addStudent";
	}
	@RequestMapping("/insertStudent")
	public String insertStudent(Student student) {
		int add=service.insertStudent(student);
		return "redirect:/selectStudent.do";
	}
}

com.dao

StudentMapper.java

package com.dao;

import com.entity.Student;
import java.util.List;

public interface StudentMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Student record);

    Student selectByPrimaryKey(Integer id);

    List<Student> selectAll();

    int updateByPrimaryKey(Student record);

	List<Student> likeSelect(String keyword);
}

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.dao.StudentMapper" >
  <resultMap id="BaseResultMap" type="com.entity.Student" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
    <result column="classes" property="classes" jdbcType="VARCHAR" />
    <result column="birth" property="birth" jdbcType="VARCHAR" />
  </resultMap>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from student
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.entity.Student" >
    insert into student (id, name, age, 
      classes, birth)
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, 
      #{classes,jdbcType=VARCHAR}, #{birth,jdbcType=VARCHAR})
  </insert>
  <update id="updateByPrimaryKey" parameterType="com.entity.Student" >
    update student
    set name = #{name,jdbcType=VARCHAR},
      age = #{age,jdbcType=INTEGER},
      classes = #{classes,jdbcType=VARCHAR},
      birth = #{birth,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select id, name, age, classes, birth
    from student
    where id = #{id,jdbcType=INTEGER}
  </select>
  <select id="selectAll" resultMap="BaseResultMap" >
    select id, name, age, classes, birth
    from student
  </select>
  <select id="likeSelect" resultMap="BaseResultMap" >
    select id, name, age, classes, birth
    from student where `name` LIKE "%"#{name}"%"
  </select>
</mapper>

com.entity

Student.java

package com.entity;

public class Student {
    private Integer id;

    private String name;

    private Integer age;

    private String classes;

    private String birth;

    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 == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

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

    public String getClasses() {
        return classes;
    }

    public void setClasses(String classes) {
        this.classes = classes == null ? null : classes.trim();
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth == null ? null : birth.trim();
    }
}

com.generator

Generator.java

package com.generator;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

public class Generator {
	/*
	 * targetRuntime="MyBatis3Simple", Do not generate Example
	 */
	public void generateMyBatis() {
		//Warning messages during MBG execution
		List<String> warnings = new ArrayList<String>();
		//When the generated code is repeated, the original code is overwritten
		boolean overwrite = true ;
		//String generatorFile = "/generator/generatorConfig.xml";
		String generatorFile = "/generatorConfig.xml";
		//Read MBG configuration file
		InputStream is = Generator.class.getResourceAsStream(generatorFile);
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config;
		try {
			config = cp.parseConfiguration(is);
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			//Create MBG
			MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
			//Execute generated code
			myBatisGenerator.generate(null);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (XMLParserException e) {
			e.printStackTrace();
		} catch (InvalidConfigurationException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		for (String warning : warnings) {
			System.out.println(warning);
		}
	}
	
	public static void main(String[] args) {
		Generator generator = new Generator();
		generator.generateMyBatis();
	}
}

com.service

StudentService.java

package com.service;

import java.util.List;

import com.entity.Student;

public interface StudentService {
	//query
	List<Student> selectAll(String keyword);
	//delete
	int delStudent(int id);
	//add to
	int insertStudent(Student student);
}

com.service.imp

StudentServiceImpl.java

package com.serviceImpl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.dao.StudentMapper;
import com.entity.Student;
import com.service.StudentService;

@Service
public class StudentServiceImpl implements StudentService {
	@Resource
	StudentMapper mapper;

	@Override
	// query
	public List<Student> selectAll(String keyword) {
		if (keyword == null || keyword.trim().equals("")) {
			List<Student> selectAll = mapper.selectAll();
			return selectAll;
		} else {
			List<Student> likeSelect = mapper.likeSelect(keyword);
			return likeSelect;
		}
	}

	// delete
	@Override
	public int delStudent(int id) {
		int del = mapper.deleteByPrimaryKey(id);
		return del;
	}

	// add to
	@Override
	public int insertStudent(Student student) {
		int insert = mapper.insert(student);
		return insert;
	}
}

mybatis

sqlMapConfig.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>
	<!-- alias -->
	<typeAliases>
		<package name="com.entity" />
	</typeAliases>
</configuration>

spring

applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://www.springframework.org/schema/beans" 
	xmlns:p="http://www.springframework.org/schema/p" 
	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-4.2.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.2.xsd 
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx.xsd
	http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">
	
	<!-- appoint spring Container read db.properties file -->
	<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
	<!-- Register connection pool with bean In container -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="driverClassName" value="${jdbc.driver}"></property>
		<property name="Url" value="${jdbc.url}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
	<!-- to configure SqlSessionFactory -->
	<bean class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- set up MyBatis Core profile -->
		<property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" />
		<!-- set up data sources -->
		<property name="dataSource" ref="dataSource" />
	</bean>
	<!-- to configure Mapper scanning -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- set up Mapper Scan package -->
		<property name="basePackage"  value="com.dao" />
	</bean>
	<!-- Configure transaction manager -->
		<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="dataSource" ref="dataSource"></property>
		</bean>
		<!-- Enable annotation mode management AOP affair -->
		<tx:annotation-driven transaction-manager="transactionManager" />
</beans>

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.springframework.org/schema/beans" 
		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/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">
		<!-- to configure Service scanning -->
		<context:component-scan base-package="com" />
		
</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.springframework.org/schema/beans" 
		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/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">
		
		<!-- to configure Controller scanning -->
		<context:component-scan base-package="com.controller" />
		<!-- Configure annotation driven -->
		<mvc:annotation-driven />
		<!-- Configure view parser -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- prefix -->
			<property name="prefix" value="/WEB-INF/jsp/" />
			<!-- suffix -->
			<property name="suffix" value=".jsp" />
		</bean>
</beans>

generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- Configuration Generator  -->
<generatorConfiguration>
	<context id="MySQLContext" targetRuntime="MyBatis3Simple"
		defaultModelType="flat">
		<!-- Configure leading and trailing delimiters -->
		<property name="beginningDelimiter" value="`" />
		<property name="endingDelimiter" value="`" />
		<!-- Configure comment information -->
		<commentGenerator>
			<!-- Do not generate comments -->
			<property name="suppressAllComments" value="true" />
			<property name="suppressDate" value="true" />
			<property name="addRemarkComments" value="true" />
		</commentGenerator>
		<!-- Database connection configuration -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/stu_db" userId="root"
			password="root">
		</jdbcConnection>

		<!-- targetPackage: Generate the package name stored in the entity class, targetProject: Specify the target project path, either relative or absolute -->
		<javaModelGenerator targetPackage="com.entity"
			targetProject="src">
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- to configure SQL Mapper Mapper.xml File properties -->
		<sqlMapGenerator targetPackage="com.dao"
			targetProject="src" />

		<!-- type="XMLMAPPER": All the methods are in use XML Interface call dependency XML file -->
		<javaClientGenerator targetPackage="com.dao" type="XMLMAPPER"
			targetProject="src" />

		<!-- Generate mappings for all tables -->
		<table tableName="%"></table>
	</context>
</generatorConfiguration>

jdbc.properties

jdbc.url=jdbc:mysql://localhost:3306/stu_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.jdbc.Driver

WebContent

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>library.two</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!--spring container  -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:spring/applicationContext-*.xml</param-value>
  </context-param>
  <!-- Listener, loading spring to configure -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- Front end controller -->
	<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/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<!-- set up post Requested character encoding filter -->
  <filter>
        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

JSP

Home.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"
		+request.getServerPort()+path;
%>
<html>
<head>
<meta charset="utf-8">
<title>Student information management system</title>
</head>
<body>
	<script type="text/javascript">
	window.location.href="<%=basePath%>/selectStudent.do";
</script>
</body>
</html>

addStudent.jsp

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
	<div class="addMoot">
		<form action="insertStudent.do" method="post">
			<input type="hidden" name="id" value="${studentList.id}" />
			<p class="add_title">Enter new students</p>
			<table border="0" cellspacing="0" cellpadding="0">
				<tr>
					<td>Student name:</td>
					<td><input type="text" name="name" value="${student.name}"></td>
				</tr>
				<tr>
					<td>Age:</td>
					<td><input type="text" name="age" value="${student.age}"></td>
				</tr>
				<tr>
					<td>Class name:</td>
					<td><input type="text" name="classes"
						value="${student.classes}"></td>
				</tr>
				<tr>
					<td>birthday:</td>
					<td><input type="date" name="birth" value="${student.birth}"></td>
				</tr>
				<tr>
					<td class="btn" colspan="2"><input class="button"
						type="submit" value="newly added" />&nbsp;&nbsp;&nbsp; <input class="reset"
						type="button" onclick="history.go(-1);" value="cancel" /></td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

student.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<head>
<meta charset="utf-8">
<title>Student information management system</title>
</head>
<style type="text/css">
tr:hover {
	background: orange;
}
</style>
<body>

	<form action="">
		<fieldset style="height: 60px">
			<legend>&nbsp;&nbsp;&nbsp;search</legend>
			full name:<input type="text" placeholder="Please enter a name to search" name="keyword"
				style="height: 25px;" />
			<button type="submit">query</button>
			<button>
				<a href="jumpInsert.do">newly added</a>
			</button>
		</fieldset>

	</form>
	<table border="1px">
		<tr>
			<th>number</th>
			<th>Student name</th>
			<th>Age</th>
			<th>Class name</th>
			<th>birthday</th>
			<th>operation</th>
		</tr>
		<c:forEach var="student" items="${studentList }" varStatus="item">
			<tr>
				<td>${student.id}</td>
				<td>${student.name}</td>
				<td>${student.age}</td>
				<td>${student.classes}</td>
				<td>${student.birth}</td>
				<td><a onclick="del(${student.id})">delete</a></td>
			</tr>
		</c:forEach>
	</table>
	<div>

		<span>common ${studentList.size()}Data bar</span>
	</div>
	<script type="text/javascript">
	function del(id){
		
	    if(confirm("Are you sure you want to delete?")){
	        return window.location.href="delStudent.do?id="+id;
	    }else {
	        return false;
	    }
	 }
	</script>

</body>
</html>

Tags: Java MySQL Mybatis Spring mvc

Posted on Sun, 28 Nov 2021 22:36:28 -0500 by insanityonline