博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Springboot+Jpa实现学生CRUD操作(含前端页面,含分页,自定义SQL)
阅读量:2205 次
发布时间:2019-05-04

本文共 6831 字,大约阅读时间需要 22 分钟。

前期准备

 

使用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;@Servicepublic 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 

应用在Controller层的类上面,@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

            

添加学生


姓名:

年龄:

性别:

页面效果

如何利用分页

直接调用Dao接口的父类JPA接口的分页方法
在Service接口层定义:

 

/**     * 分页查询所有数据     * @param page     * @param pageSize     * @return     */    Page
findAll(int page,int pageSize);

 

Service实现:

 

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

 

Controller层:

 

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

 

转载于:https://www.cnblogs.com/songhuiqiang/p/10801656.html

你可能感兴趣的文章
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>
linux之CentOS下文件解压方式
查看>>
Django字段的创建并连接MYSQL
查看>>
div标签布局的使用
查看>>
HTML中表格的使用
查看>>
(模板 重要)Tarjan算法解决LCA问题(PAT 1151 LCA in a Binary Tree)
查看>>
(PAT 1154) Vertex Coloring (图的广度优先遍历)
查看>>
(PAT 1115) Counting Nodes in a BST (二叉查找树-统计指定层元素个数)
查看>>
(PAT 1143) Lowest Common Ancestor (二叉查找树的LCA)
查看>>
(PAT 1061) Dating (字符串处理)
查看>>
(PAT 1118) Birds in Forest (并查集)
查看>>
数据结构 拓扑排序
查看>>
(PAT 1040) Longest Symmetric String (DP-最长回文子串)
查看>>
(PAT 1145) Hashing - Average Search Time (哈希表冲突处理)
查看>>
(1129) Recommendation System 排序
查看>>
PAT1090 Highest Price in Supply Chain 树DFS
查看>>
(PAT 1096) Consecutive Factors (质因子分解)
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>