springBoot+jpa实现增删改查

自学java,第一次创建spring boot工程,写了一个简单的增删改查。。。

1. 新建project
新建project可参考此文章:SpringBoot工程创建

2. 本地搭建数据库环境
本地搭建mysql数据库,可参考此64位win10系统安装mysql教程

3. 在mysql新建数据库

(1)用navcat工具连接上本地数据库,然后如图,右键新建数据库,命名为student,字符集和排序规则默认选择图中这两个。

spring boot jpa 批量删除 springboot jpa增删改查_spring


(2)新建数据表

spring boot jpa 批量删除 springboot jpa增删改查_spring_02


按下保存之后弹出小窗填写数据表名称。(后续在项目中添加entity时候,需要跟此处表名称保持一致)

(3)方便测试查询接口,可以现在数据库手动添加一条数据,如图:

spring boot jpa 批量删除 springboot jpa增删改查_数据库_03


4. 新建实体类

数据库准备完成之后,回到我们新建的project,先完成三件事:

(1)新建四个package,分别为controller,service,dao,entity。 (2)将原本的application.properties文件改为application.yml,存放相关配置信息。

具体内容如下:

server:
  port:8080
  servlet.context-path:/nly
spring:
  datasource:
    type:com.alibaba.druid.pool.DruidDataSource
    driver-class-name:com.mysql.cj.jdbc.Driver
    url:jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username:root
    password:sagis
    initialSize:20
    minIdle:50
    maxActive:500
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

(3)在pom文件中配置druid数据库连接池,引入相关依赖。

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

完成之后如图所示:

spring boot jpa 批量删除 springboot jpa增删改查_spring boot_04

5. 新建entity

在上面新建的entity文件夹下新建一个class,名称需要跟数据库表名保持一致,首字母大写。我的数据表名称是user,所以此处新建一个User类。(先上代码~~~~)具体内容如下:

package com.nly.test.entity;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity

@Table(name = "User")

public class User {

    @Id
    private Integer id;
    private String name;
    private Integer age;
    private Integer sex;
    private String tel;
    private String email;
    private String remark;

    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 Integer getSex() {
        return sex;
    }

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

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRemark() {
        return remark;
    }

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

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

spring boot jpa 批量删除 springboot jpa增删改查_数据库_05


代码说明及生成操作:

spring boot jpa 批量删除 springboot jpa增删改查_spring_06


spring boot jpa 批量删除 springboot jpa增删改查_数据库_07


spring boot jpa 批量删除 springboot jpa增删改查_数据库_08

6. 新建dao class
在我们新建的dao文件夹下面新建一个class,命名一般是entity的名称加dao,如UserDao.class

package com.nly.test.dao;

import com.nly.test.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserDao extends JpaRepository<User,Integer> {

}

新建的UserDao.class,将class改为interface,并且添加extends JpaRepository<User,Integer>,写好之后点击对应的类按住alt+回车即可引入对应的包

spring boot jpa 批量删除 springboot jpa增删改查_数据库_09

7. 新建service

在service文件下面新建UserService.class,提供接口,并且在service问价下面新建一个impl package,然后在impl下新建UserServiceImpl.class用来实现接口。结构如图:

spring boot jpa 批量删除 springboot jpa增删改查_spring_10

UserService.class
##需要把class改为interface

package com.nly.test.service;


import com.nly.test.entity.User;

public interface UserService {
    User getById(Integer id);//根据id查询
    User addUser(User user);//添加用户
    User updateUser(User user);//修改用户
    void deleteUser(int id);//删除用户
}

UserServiceImpl.class

package com.nly.test.service.impl;

import com.nly.test.dao.UserDao;
import com.nly.test.entity.User;
import com.nly.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;


    @Override
    public User getById(Integer id){
        return userDao.getOne(id);
    }


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

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

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

@Autowired自动为属性赋值,自动注入

  1. 新建UserController.class
    添加和更新的方法得注意 @ResponseBody和@RequestBody的使用
package com.nly.test.controller;


import com.nly.test.entity.User;
import com.nly.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController

@RequestMapping("/test")//公用接口,访问时候需要先加上

public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/hello")//测试,试试项目能否成功运行并访问
        //私有接口,访问时候需要先加上公共再加私有
    public String hello(){
        return "hello world";
    }


    @RequestMapping("/getById")//查询
    public String getById(Integer id){
        User user = userService.getById(id);
        return  user.toString();
    }

    @ResponseBody
    @RequestMapping(value="/add",method = RequestMethod.POST)
    //添加
    public String add(@RequestBody User user){
        User newuser = userService.addUser(user);
        user.setId(newuser.getId());
        return newuser.toString();
    }

    @ResponseBody
    @RequestMapping(value="update",method = RequestMethod.POST)
    //修改
    public String update(@RequestBody User user){
        User newuser = userService.updateUser(user);
        user.setId(newuser.getId());
        return newuser.toString();
    }

    @RequestMapping(value="/delete/{id}",method = RequestMethod.GET)
    //删除
    public String delete(@PathVariable int id){
        userService.deleteUser(id);
        return "sucesss";
    }
}

8. 运行项目

这两种方式都可以

spring boot jpa 批量删除 springboot jpa增删改查_spring_11


控制台出现这个即为运行成功,接下来便可在浏览器访问

spring boot jpa 批量删除 springboot jpa增删改查_spring boot_12


9. 测试效果

这里需要注意的是因为在application.yml文件中配置了servlet.context-path,所以访问路径需要加上这个,然后再加公共路径再加私有路径,再加其他参数

(1)hello测试

spring boot jpa 批量删除 springboot jpa增删改查_数据库_13

(2)查询

这里查询到的是事先在数据库添加的一条数据

spring boot jpa 批量删除 springboot jpa增删改查_User_14


(3)添加

添加是post请求,所以可以在postman或者其他工具中测试,添加成功后可以去数据库验证是否添加了数据

spring boot jpa 批量删除 springboot jpa增删改查_spring_15


刷新数据表即可发现刚刚添加的数据

spring boot jpa 批量删除 springboot jpa增删改查_User_16


(4)修改

将id为2的用户的name,age和sex做一个修改

spring boot jpa 批量删除 springboot jpa增删改查_User_17


数据库查看数据验证:

spring boot jpa 批量删除 springboot jpa增删改查_spring_18


(5)删除

将需要删除的用户id直接接跟随在url后面

spring boot jpa 批量删除 springboot jpa增删改查_java_19


删除成功后数据库验证

spring boot jpa 批量删除 springboot jpa增删改查_java_20


以上就是全部的内容,基础的增删改查,批量或者更多功能还需进一步努力~~~~加油!!!