从零开始完成一个SpringBoot+JPA的学生管理系统Web案例((二)后端实现)

这篇主要展示该案例的后端代码和功能实现,后端实现数据的操作功能后返回Json数组。

(一)目录结构:


(二)后台代码

Entity包

1. User.java

package com.example.stu.kudestu.stu.entity;

import javax.persistence.*;


@Entity
@Table(name = "user")
public class User {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) //设置主键自增
    private Integer id;
    private String username;
    private String password;

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2. Student.java

package com.example.stu.kudestu.stu.entity;

import javax.persistence.*;

@Entity
@Table(name = "student")
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private Integer age;
    private String sex;


    public Student() {
    }

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

    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;
    }

    public String getSex() {
        return sex;
    }

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

Dao包

1. UserDao

package com.example.stu.kudestu.stu.dao;

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

public interface UserDao  extends JpaRepository<User,Integer> {

    User findUserById(Integer id);

    @Query(name="login",nativeQuery = true,value = "select * from user where username=:username and password=:password")
    User login(@Param("username") String username, @Param("password") String password);
}

2. StudentDao

package com.example.stu.kudestu.stu.dao;

import com.example.stu.kudestu.stu.entity.Student;
import com.example.stu.kudestu.stu.entity.User;
import org.springframework.data.domain.Page;
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 findStuById(Integer id);

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

}

Service包

1. UserService 

package com.example.stu.kudestu.stu.service;

import com.example.stu.kudestu.stu.entity.User;
import org.springframework.data.domain.Page;

import java.util.List;

public interface UserService {

    List<User> findAll();

    User findUserById(int id);

    User save(User user);

    User update(User user);

    void delete(int id );

    User login(String username,String password);

    Page<User> findByPage(int page, int pagesize);

}

2. UserServiceImpl

package com.example.stu.kudestu.stu.service;

import com.example.stu.kudestu.stu.dao.UserDao;
import com.example.stu.kudestu.stu.entity.User;
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 UserServiceImpl implements UserService{



    @Autowired
    UserDao userDao;

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public User findUserById(int id) {
        return userDao.findUserById(id);
    }


    @Override
    public User save(User user) {
        return userDao.save(user);
    }

    @Override
    public User update(User user) {
        return userDao.save(user);
    }

    @Override
    public void delete(int id) {
        userDao.deleteById(id);
    }

    @Override
    public User login(String username, String password) {
        return userDao.login(username,password);
    }

    @Override
    public Page<User> findByPage(int page, int pagesize) {
        Pageable pageable = PageRequest.of(page,pagesize);
        return userDao.findAll(pageable);
    }
}

3. StudentService

package com.example.stu.kudestu.stu.service;

import com.example.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 id);
    //根据id查询
    Student findStuById(Integer id);
    //根据名字查询
    List<Student> fingStuByName(String name);

    /**
     * 分页查询所有
     * @param page
     * @param pagesize
     * @return
     */
    Page<Student> findAll(int page,int pagesize);

}

4. StudentServiceImol

package com.example.stu.kudestu.stu.service;

import com.example.stu.kudestu.stu.dao.StudentDao;
import com.example.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);
    }

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

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

    @Override
    public List<Student> fingStuByName(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);
    }
}

Controller包

1. UserController

package com.example.stu.kudestu.stu.controller;


import com.example.stu.kudestu.stu.entity.User;
import com.example.stu.kudestu.stu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.List;


@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询所有用户
     * @return
     */
    @RequestMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }

    /**
     * 根据id查找用户
     * @param id
     * @return
     */
    @RequestMapping("/findById")
    public User findById(int id){
        return userService.findUserById(id);
    }

    /**
     * 用户注册
     * @param user
     * @return
     */
    @RequestMapping(value = "/reg",method = RequestMethod.POST)
    public User reg(User user){

        return userService.save(user);
    }

    /**
     * 用户登录
     * @param username
     * @param password
     * @return
     */
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public User login(String username,String password){
        return userService.login(username,password);
    }

    /**
     * 用户修改
     * @param user
     * @return
     */
    @RequestMapping(value = "/update",method = RequestMethod.POST)
    public User update(User user){
        return userService.save(user);
    }

    /**
     * 用户删除
     * @param id
     */
    @RequestMapping("/delete")
    public void delete(int id){
        userService.delete(id);
    }
    
    /**
     * 分页查询
     * @param page
     * @param response
     * @return
     */
    @RequestMapping("/page")
    public Page<User> findByPage(Integer page, HttpServletResponse response){

        //解决跨域请求
        response.setHeader("Access-Control-Allow-Origin","*");

        if(page==null || page<=0){
            page = 0;
        }else{
            page -= 1;
        }

        return userService.findByPage(page,5);

    }

}

2. StudentController

package com.example.stu.kudestu.stu.controller;


import com.example.stu.kudestu.stu.entity.Student;
import com.example.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.HttpServletResponse;
import java.util.List;

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

    @Autowired
    StudentService studentService;

    @PostMapping("/add")
    public Student save(Student student){
        return studentService.save(student);
    }

    @PostMapping("/update")
    public Student update(Student student){
        return studentService.save(student);
    }

    @GetMapping("/delete/{id}")
    public String delete(@PathVariable int id){
        studentService.delete(id);
        return "delete success";
    }


    @GetMapping("/findById")
    public Student findById(int id){
        return studentService.findStuById(id);
    }

    @GetMapping("/findByName/{name}")
    public List<Student> findByName(@PathVariable String name){

        return studentService.fingStuByName(name);
    }

    @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);

    }




}

(三)测试

这里使用Postman来测试(前后端分离为了测试Post请求和查看Json数据)下载Postman百度云盘链接  提取码:qe9r 

测试StudentControllar,功能已经全部实现和测试过了,下面选一些来展示。下面是一些请求Mapping:

//学生注册
@PostMapping("/add") 
//学生修改
@PostMapping("/update")
//学生删除
@GetMapping("/delete/{id}")
//根据Id查找学生
@GetMapping("/findById")
//根据姓名查找学生
@GetMapping("/findByName/{name}")
//分页查询所有
@GetMapping("/query")

1. 测试注册

地址栏输入 http://localhost:8888/kude/stu/add 然后在下面添加参数后点击Send

添加后数据库信息:

2. 测试修改

成功后返回结果

3. 分页查询所有数据

此时表中共有14条数据,按照设定的一页五条数据的话,一共能分为三页。

输入请求地址

返回的所有Json数据如下:

{
    "content": [
        {
            "id": 1,
            "name": "杜炮",
            "age": 20,
            "sex": "男"
        },
        {
            "id": 2,
            "name": "Lux",
            "age": 16,
            "sex": "女"
        },
        {
            "id": 3,
            "name": "Lux",
            "age": 17,
            "sex": "女"
        },
        {
            "id": 4,
            "name": "Lux",
            "age": 18,
            "sex": "女"
        },
        {
            "id": 5,
            "name": "Klua",
            "age": 20,
            "sex": "男"
        }
    ],
    "pageable": {
        "sort": {
            "sorted": false,
            "unsorted": true,
            "empty": true
        },
        "offset": 0,
        "pageNumber": 0,
        "pageSize": 5,
        "unpaged": false,
        "paged": true
    },
    "totalPages": 3,      //分页数
    "totalElements": 14,  //数据总条数
    "last": false,
    "number": 0,          //当前页数(从零开始)0就是第一页
    "size": 5,            //分页大小
    "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
    },
    "numberOfElements": 5,  //该页的数据条数
    "first": true,
    "empty": false
}

测试完成,接下来编写前台代码,前后端链接再进行测试,请看下一篇:《从零开始完成一个SpringBoot+JPA的Web案例((三)前端实现)》 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值