Springboot和Jpa实现学生CRUD操作代码实例

网友投稿 413 2022-12-11


Springboot和Jpa实现学生CRUD操作代码实例

前期准备

使用idea新建个SpringBoot项目

在数据库中建student表

建包

1.编写entity包下实体类Student

(一个javabean规范)

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

import javax.persistence.*;

@Entity

@Table(name = "student")

//@Entity 应用在实体类上 @Table(name = "student") 应用在实体类上,并且name属性为数据库表名

public class Student {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY) //ID自增

private Integer id;

private String name;

private int age;

private String sex;

@Override

public String toString() {

return "Student{" +

"id=" + id +

", name='" + name + '\'' +

", age=" + age +

", sex='" + sex + '\'' +

'}';

}

public Student() {

}

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 int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

}

2.编写dao层StudentDao类

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

import com.example.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 findStuById(Integer id);

@Query(name="findStuByName",nativeQuery = true,value =

"select * from student where name=:name ")

List findStuByName(@Param("name") String name);

}

3.编写service层类StudentService,面象接口

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);//通过ID查找学生,接口中没有此方法,在StudentDao接口创建

List findStuByName(String name);//通过学生姓名查找,在StudentDao接口创建

/**

* 分页查询所有数据

* @param page //当前页

* @param pageSize //每页记录数

* @return

*/

Page findAll(int page,int pageSize);

}

在service对接口实现

import org.springframework.stereotype.Service;

import java.util.List;

@Service

public class StudentServiceimpl implements StudentService {

@Autowired//用于类中的属性注入

private 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 findStuByName(String name) {

return studentDao.findStuByName(name);

}

@Override

public Page findAll(int page,int pageSize) {

Pageable pageable= PageRequest.of(page,pageSize);

return studentDao.findAll(pageable);

}

}

4.编写Controller层StudentController类

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

import com.example.stu.kudestu.stu.dao.StudentDao;

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

/*应用在Controller层的类上面

@RequestMapping("/s")

public class StudentController {

@Autowired//依赖注入

private StudentService studentService;

/**

* 添加学生

* @param student 要添加学生对象

* @return

*/

@PostMapping("/add")

/*@PostMapping

映射一个POST请求

Spring MVC新特性

提供了对Restful风格的支持

@GetMapping,处理get请求

@PostMapping,处理post请求

@PutMapping,处理put请求

@DeleteMapping,处理delete请求

*/

    

public Student save(Student student){

return studentService.save(student);

}

/**

* 修改学生

* @param student

*/

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

}

@GetMapping("/findByName/{name}")

public List findByName(@PathVariable String name){

return studentService.findStuByName(name);

}

@GetMapping("/query")

public Page 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);

}

}

@RestController

应用在ConXldMomuntroller层的类上面,@RestController注解相当于@ResponseBody + @Controller合在一起的作用,同时返回的数据为json数据

使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面

若返回json等内容到页面,则需要加@ResponseBody注解

@PostMapping(value = "/add")等价于@RequestMapping(value = "/add",method = RequestMethod.POST)

5.利用HBuilder进行前端编写

jquery.js内容到https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js复制即可

主页面:index.html

添加学生

上一页  下一页

页面效果

添加学生的页面信息add.html

<head>

姓名:

年龄:

性别:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java方法重载和重写原理区别解析
下一篇:Java递归基础与递归的宏观语意实例分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~