使用SpringBoot实现增删改查

1.创建项目

我们需要创建一个Spring initializr的项目。

2.引入依赖

在src->main->resources下的的aoolication.properties文件中写入

#数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#在下面3306配置自己的数据库(自己配置)
spring.datasource.url=jdbc:mysql://localhost:3306/stu?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
#数据库用户(自己配置)
spring.datasource.username=root
#数据库密码(自己配置)
spring.datasource.password=root
spring.datasource.initialSize=20
spring.datasource.minIdle=50
spring.datasource.maxActive=500

#上下文配置
server.port=8888
server.servlet.context-path=/stu

#配置jpa
#帮我们自动生成表结构
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

在pom.xml文件中导入依赖

<!-- druid数据库连接池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
<!-- 使用page页面-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency>

如果出现红色字体如下图

在这里插入图片描述
点击右下角的import changes进行下载
在这里插入图片描述

3.分包写类

在这里插入图片描述
创建这四个包
entity 是实体
dao 对数据库操作
service 业务类代码和对dao的调用
controller 页面的访问控制

Student
package com.kude.stu.kudestu.stu.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//设置为自动递增
    private int id;
    private String name;
    private int age;
    private String sex;

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

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

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

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getSex() {
        return sex;
    }

    public Student() {
    }
}

StudentDao
package com.kude.stu.kudestu.stu.dao;

import com.kude.stu.kudestu.stu.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface StudentDao extends JpaRepository<Student,Integer> {

    Student findStudentById(Integer id);

    @Query(name = "findStuByName",nativeQuery = true,value =
            "select * from student where name=:name")
    List<Student> findStuByName(@Param("name") String name);
    }
StdentService

这是一个接口

package com.kude.stu.kudestu.stu.service;

import com.kude.stu.kudestu.stu.entity.Student;
import org.springframework.data.domain.Page;

import java.util.List;

public interface StudentService {

    Student save(Student student);
    Student update(Student student);
    void delete(Integer sid);
    Student findStuById(Integer id);
    List<Student> findStuByName(String name);

    /**
     * 分页查询所有数据
     * @param page 当前页
     * @param pageSize 每页记录数
     * @return
     */
    Page<Student> findAll(int page,int pageSize);

}
StudentServiceImpl
package com.kude.stu.kudestu.stu.service;

import com.kude.stu.kudestu.stu.dao.StudentDao;
import com.kude.stu.kudestu.stu.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    StudentDao studentDao;

    @Override
    public Student save(Student student) {
        return studentDao.save(student);
    }

    @Override
    public Student update(Student student) {
        return studentDao.save(student);//调用save如果传入的id已经存在那么会把之前的信息进行覆盖。
    }

    @Override
    public void delete(Integer sid) {
        studentDao.deleteById(sid);
    }

    @Override
    public Student findStuById(Integer sid) {
        return studentDao.findStudentById(sid);
    }

    @Override
    public List<Student> findStuByName(String name) {
        return studentDao.findStuByName(name);
    }

    @Override
    public Page<Student> findAll(int page,int pageSize) {
        Pageable pageable = PageRequest.of(page,pageSize);
        return studentDao.findAll(pageable);
    }
}

StudentController
package com.kude.stu.kudestu.stu.controller;

import com.kude.stu.kudestu.stu.entity.Student;
import com.kude.stu.kudestu.stu.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;

@RestController
@RequestMapping("/s")
public class StudentController {

    @Autowired
    StudentService studentService;

    /**
     * 添加学生
     * @param student 要添加的学生对象
     * @return
     */
    @PostMapping("/add")
    public Student save(Student student){
        return studentService.save(student);
    }

    /**
     * 修改学生
     * @param student
     * @return
     */
    @PostMapping("/update")
    public Student update(Student student){
        return studentService.save(student);
    }

    /**
     * 删除学生
     * @param id 要删除的学生id
     * @return
     */
    @GetMapping("/del/{id}")
    public String del(@PathVariable int id){
        studentService.delete(id);
        return "yes";
    }

    /**
     * 通过姓名找到信息
     * @param name
     * @return
     */
    @GetMapping("/findByName/{name}")
    public List<Student> findByName(@PathVariable String name){
        return studentService.findStuByName(name);
    }

    /**
     * 利用分页查找全部信息
     * @param page
     * @param response
     * @return
     */
    @GetMapping("/query")
    public Page<Student> findByPage(Integer page,HttpServletResponse response){

        //异步请求使用
        response.setHeader("Access-Control-Allow-Origin","*");
        if(page==null || page<=0){
            page = 0;
        }else{
            page -= 1;
        }
        return studentService.findAll(page,5);
    }

}

注解千万不要不少不然会报各种各样的错误。

4.前端页面

十分简陋的前端页面
index.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
  <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript">
   var page=1;
   var tp=0;
   $(function(){
    show();
    });
    
   function upPage(){
    if(page>1){
     page--;
     show();
    }
    
   }
   
   function downPage(){
    if(page<tp){
     page++;
     show();
    }
   } 
   
   function show(){
    $.ajax({
     url:'http://localhost:8888/stu/s/query?page='+page,
     success:function(result){
      var rel=result.content;
      tp=result.totalPages;
      var htmlStr="<table width='80%' algin='center' border='1'>"+
      "<tr><th>ID</th><th>姓名</th><th>年龄</th><th>性别</th><th>操作</th></tr>";
      for(var i=0;i<rel.length;i++){
       var stu=rel[i];
       htmlStr+="<tr><td>"+stu.id+"</td><td>"+stu.name+"</td><td>"+stu.age+"</td><td>"+stu.sex+"</td>"+
       "<td><a href=''>编辑</a>&nbsp;<a href='http://localhost:8888/stu/s/del/"+stu.id+"'>删除</a></td></tr>";
      }
      
      htmlStr+="</table>";
      $("#show").html(htmlStr);
     }
    });
   }
   
  </script>
 </head>
 <body>
  <h1 style="text-align: center">学生管理系统</h1>
  <hr>
  <a href="add.html">添加学生</a>
  <div id="show">
  </div>
  <a href="javascript:upPage()">上一页</a>&nbsp;&nbsp;<a href="javascript:downPage()">下一页</a>
 </body>
</html>

在这里插入图片描述

add.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <body>
  <h1>添加学生</h1>
  <form action="http://localhost:8888/stu/s/add" method="post">
   <p>
    姓名
    <input type="text" name="name"/>
   </p>
   <p>
    年龄
    <input type="text" name="age"/>
   </p>
   <p>
    性别
    <input type="radio" name="sex" value="男" checked/>男
    <input type="radio" name="sex" value="女"/>女
   </p>
   <p>
    <input type="submit" value="保存"/>
   </p>
  </form>
 </body>
</html>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/MCYZSF/article/details/89743427