springboot+ssm实现简单的增删改查操作

项目github地址:https://github.com/cenmen/springboot-ssm-cudr-demo1.0

项目文件目录如下:

首先先创建数据库liang和student表:

在eclipse新建maven工程:

修改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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
  </parent>
  <groupId>com.liang</groupId>
  <artifactId>spring-boot-cudr-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <!-- 定义全局属性 -->
	<properties>
		<!-- 定义更改JDK版本属性 -->
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- 配置devtools开启热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<!-- 配置tomcat启动器(tomcat我们自己提供) -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<!-- 在就容器上借助工具运行spring boot -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-legacy</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
		<!-- 配置MyBatis启动器 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.0</version>
		</dependency>
		<!-- 配置mysql驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- 配置c3p0连接池 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.18</version>
			<scope>provided</scope>
		</dependency>
		<!-- 单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId> org.springframework.boot </groupId>
				<artifactId> spring-boot-maven-plugin </artifactId>
			</plugin>
		</plugins>
	</build>
</project>

新建application.properties:

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/liang
spring.datasource.username=root
spring.datasource.password=1074850787
spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource

然后新建包com.liang.student.beans 新建class:Student类(要记得为自己配置好lombok环境,或者定义setter/getter方法也可以)

package com.liang.student.beans;

import lombok.Data;

//lombok注解,在编译时自动为属性生成构造器,getter/setter,tostring等方法
@Data
public class Student {
	private String num;
	private String name;
	private String grade;
	private String college;
}

然后新建包com.liang.student.mapper新建interface:StudentMapper接口

package com.liang.student.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.liang.student.beans.Student;

public interface StudentMapper {
	/**
	 * 获取所有的学生
	 * @return
	 */
	@Select("select * from student")
	List<Student> getStudents();
	
	/**
	 * 添加学生
	 * @param student
	 */
	@Insert("insert into student values(#{num}, #{name}, #{grade}, #{college})")
	void addStudent(Student student);
	
	/**
	 * 根据ID查询学生
	 * @param student
	 * @return
	 */
	@Select("select * from student where num = #{num}")
	Student getStudentById(Student student);
	
	/**
	 * 修改学生
	 * @param student
	 */
	@Update("update student set name = #{name}, grade = #{grade}, college = #{college} where num = #{num}")
	void updateStudent(Student student);
	
	/**
	 * 删除学生
	 * @param student
	 */
	@Delete("delete from student where num = #{num}")
	void deleteStudent(Student student);
}

然后新建包com.liang.student.service新建interface:IStudentService接口

package com.liang.student.service;

import java.util.List;

import com.liang.student.beans.Student;

public interface IStudentService {
	/**
	 * 获取所有学生
	 * @return
	 */
	List<Student> findAllStudent();
	
	/**
	 * 添加学生
	 * @param student
	 */
	void addStudent(Student student);
	
	/**
	 * 根据ID查询学生
	 * @param id 学生ID
	 * @return
	 */
	Student getStudent(String num);
	
	/**
	 * 修改学生
	 * @param student
	 */
	void updateStudent(Student student);
	
	/**
	 * 删除学生
	 * @param id
	 */
	void deleteStudent(String num);
}

然后新建包com.liang.student.service.impl新建class:StudentServiceImpl类

package com.liang.student.service.impl;

import java.util.List;

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

import com.liang.student.beans.Student;
import com.liang.student.mapper.StudentMapper;
import com.liang.student.service.IStudentService;

@Service
public class StudentServiceImpl implements IStudentService {

	@Autowired
	private StudentMapper studentMapper;
	
	@Override
	public List<Student> findAllStudent() {
		return studentMapper.getStudents();
	}

	@Override
	public void addStudent(Student student) {
		studentMapper.addStudent(student);
	}

	@Override
	public Student getStudent(String num) {
		Student student = new Student();
		student.setNum(num);
		return studentMapper.getStudentById(student);
	}

	@Override
	public void updateStudent(Student student) {
		studentMapper.updateStudent(student);
	}

	@Override
	public void deleteStudent(String num) {
		Student student = new Student();
		student.setNum(num);
		studentMapper.deleteStudent(student);
	}

}

然后新建包com.liang.student.controller新建class:AdminController类

package com.liang.student.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.liang.student.beans.Student;
import com.liang.student.service.IStudentService;

@RestController
@RequestMapping("/admin")
public class AdminController {
	@Autowired
	private IStudentService studentService;
	
	@RequestMapping(path="/addStudent.do")
	public void addStudent(Student student) {
		studentService.addStudent(student);
	}
	
	@RequestMapping(path="/updateStudent.do")
	public void updateStudent(Student student) {
		studentService.updateStudent(student);
	}
	
	@RequestMapping(path="/deleteStudent.do")
	public void deleteStudent(String num) {
		studentService.deleteStudent(num);
	}
	
	@RequestMapping(path="/getAllStudent.do", produces="application/json;charset=utf-8")
	public List<Student> getAllStudent(ModelMap modelMap) {
		List<Student> studentList = studentService.findAllStudent();
		modelMap.addAttribute("studentList", studentList); 
		System.out.println(studentList);
		return studentList;
	}
}

然后新建包com.liang.student.test新建class:Application类

package com.liang.student.test;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;


/*
	SpringBoot的启动类
*/
@SpringBootApplication
@ComponentScan(basePackages={"com.liang.student"})
@MapperScan("com.liang.student.mapper")
public class Application extends SpringBootServletInitializer {
	
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
	     return builder.sources(Application.class);
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

最后在src/main/resources新建Floder:static文件夹后在里面新建system.html

说明:system.html文件中引用bootstrap模板,另外由于create(增加),update(修改),delete(删除)不需要返回内容,直接提交即可,而read(查找)需要返回内容,使用ajax来提交请求,并获取到reponse内容进行处理填充到页面上。

<!DOCTYPE html>
<html>
<head>
  <title>System</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap.min.css">
  <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script>
  <script src="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/js/bootstrap.min.js"></script>
  <script>
	function findAllStudent()
	{
		var xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange = function() {
		    if (this.readyState == 4 && this.status == 200) {
		        obj = JSON.parse(this.responseText);
		        var str = "";
		        for(i = 0; i < obj.length; i++){
		        	str += "<tr><td>"+obj[i].num+"</td><td>"+obj[i].name+"</td><td>"+obj[i].grade+"</td><td>"+obj[i].college+"</td></tr>";
		        	};
	        	document.getElementById("mesContent").innerHTML = str;
		    }
		};
		xmlhttp.open("GET", "/admin/getAllStudent.do", true);
		xmlhttp.send();
	}
	</script>
</head>
	<style type="text/css">
		.left-side{ float:left;width:20%;height:500px;border:2px solid black} 
		.content-side{ float:left;width:76%;height:500px;border:2px solid black;margin-left: 4px;} 
		.form-control{width: 180px}
		.nav-item{width:100%}
	</style>
<body>

<div class="container-fluid">

	<div class="left-side">
		<!-- Nav pills -->
	  <ul class="nav nav-pills" role="tablist">
	    <li class="nav-item">
	      <a class="nav-link active" data-toggle="pill" href="#read">Read</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" data-toggle="pill" href="#create">Create</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" data-toggle="pill" href="#update">Update</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" data-toggle="pill" href="#delete">Delete</a>
	    </li>
	  </ul>
	</div>
  
	<div class="content-side">
		<!-- Tab panes -->
	  <div class="tab-content">
	  
	  <div id="read" class="container-fluid tab-pane active"><br>
	      <h3>Read</h3>
	      <div >
	      	<table class="table table-bordered">
			    <thead>
			      <tr>
			        <th>num</th>
			        <th>name</th>
			        <th>grade</th>
			        <th>college</th>
			      </tr>
			    </thead>
			    <tbody id="mesContent">
			    </tbody>
			</table>
	      </div>
		  <button type="button" onclick="findAllStudent()" class="btn btn-primary">request</button>
	    </div>
	  
	    <div id="create" class="container-fluid tab-pane fade"><br>
	      <h3>Create</h3>
	      <form action="/admin/addStudent.do" method="post">
			  <div class="form-group">
			    <label for="num">num:</label>
			    <input type="text" class="form-control" id="num" name="num" value ="123">
			  </div>
			  <div class="form-group">
			    <label for="name">name:</label>
			    <input type="text" class="form-control" id="name" name="name" value ="123">
			  </div>
			  <div class="form-group">
			    <label for="grade">grade:</label>
			    <input type="text" class="form-control" id="grade" name="grade" value ="123">
			  </div>
			  <div class="form-group">
			    <label for="college">college:</label>
			    <input type="text" class="form-control" id="college" name="college" value ="123">
			  </div>
			  <button type="submit" class="btn btn-primary">Submit</button>
			</form>
	    </div>
	    
	    <div id="update" class="container-fluid tab-pane fade"><br>
	      <h3>Update</h3>
	      <form action="/admin/updateStudent.do" method="post">
			  <div class="form-group">
			    <label for="num">num: (this num must exist in database)</label>
			    <input type="text" class="form-control" id="num" name="num" value ="123">
			  </div>
			  <div class="form-group">
			    <label for="name">name:</label>
			    <input type="text" class="form-control" id="name" name="name" value ="456">
			  </div>
			  <div class="form-group">
			    <label for="grade">grade:</label>
			    <input type="text" class="form-control" id="grade" name="grade" value ="456">
			  </div>
			  <div class="form-group">
			    <label for="college">college:</label>
			    <input type="text" class="form-control" id="college" name="college" value ="456">
			  </div>
			  <button type="submit" class="btn btn-primary">Submit</button>
			</form>
	    </div>
	    
	    <div id="delete" class="container-fluid tab-pane fade"><br>
	      <h3>Delete</h3>
	      <form action="/admin/deleteStudent.do" method="post">
			  <div class="form-group">
			    <label for="num">num: (this num must exist in database)</label>
			    <input type="text" class="form-control" id="num" name="num" value ="123">
			  </div>
			  <button type="submit" class="btn btn-primary">Submit</button>
			</form>
	    </div>
	    
	  </div>
	</div>
  
</div>

</body>
</html>

准备好之后,在application类中右键Run as运行成功后在浏览器输入localhost:8080/system.html

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值