Springboot+jpa单表增删改查

前言

今天给大家分享一个springboot+jpa+maven的单表增删改查,开发工具idea,网上新建项目的流程很多这里就不多赘述了,主要跟大家讲讲代码的核心部分。

Maven依赖

<!--springboot包-->
             <!--springboot包-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter</artifactId>
             </dependency>
     
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-test</artifactId>
                 <scope>test</scope>
             </dependency>
     
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-jdbc</artifactId>
             </dependency>
             <!--jpa包-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-data-jpa</artifactId>
             </dependency>
             
             <!--mysql包-->
             <dependency>
                 <groupId>mysql</groupId>
                 <artifactId>mysql-connector-java</artifactId>
             </dependency>

             <!-- lombok插件 实体注解省略get set -->
		     <dependency>
			     <groupId>org.projectlombok</groupId>
			     <artifactId>lombok</artifactId>
			     <version>1.18.4</version>
			     <scope>provided</scope>
		    </dependency>

配置文件

spring:
  datasource:
      # mysql
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/exe?useUnicode=true&allowMultiQueries=true&characterEncoding=utf8
    username: root
    password: 123456

  jpa:
     database: mysql
     database-platform: com.example.student.MySQLDialect # mysql
     hibernate:
       ddl-auto: update # 自动生成表
     show-sql: false # 不显示sql(false)

  # Server HTTP port.
server:
  port: 9004
  tomcat:
    uri-encoding: utf-8

项目结构

在这里插入图片描述

controller层

这里主要讲一下RestController 和Controller的区别:
知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用

  1. 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

  2. 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解

package com.example.student.controller;
import com.example.student.entity.Student;
import com.example.student.response.BaseEntity;
import com.example.student.service.StudentServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

/**
 *  controller层
 */
@RestController
@RequestMapping("/api/student")
public class StudentController {
    @Autowired
    private StudentServiceImpl studentService;

    /**
     * 查找一条
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Object findOne(@PathVariable Integer id) {
        return BaseEntity.success(studentService.findOne(id));
    }

    /**
     * 新增或者修改
     *
     * @param student
     * @return
     */
    @PostMapping("")
    public Object create(Student student) {
        return BaseEntity.success(studentService.createOrUpdate(student));
    }

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @DeleteMapping("")
    public Object delete(Collection<Integer> ids) {
        return BaseEntity.success(studentService.delete(ids));
    }
}

service层

需要注意的是:@Service不要掉了

package com.example.student.service;
import com.example.student.entity.Student;
import com.example.student.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;

/**
 * 业务层
 */
@Service
public class StudentServiceImpl {
    @Autowired
    private StudentRepository studentRepository;

    /**
     * 查一条信息
     *
     * @param id
     * @return
     */
    public Student findOne(Integer id) {
        return studentRepository.findOne(id);
    }

    /**
     * 新增或修改
     *
     * @param student
     * @return
     */
    public Student createOrUpdate(Student student) {
        return studentRepository.save(student);
    }

    public Integer delete(Collection<Integer> ids) {
        return studentRepository.deleteAllByIdIn(ids);
    }
}

repository层

这里主要是写sql,继承CrudRepository

package com.example.student.repository;

import com.example.student.entity.Student;
import org.springframework.data.repository.CrudRepository;

import java.util.Collection;

/**
 * sql语句
 */
public interface StudentRepository extends CrudRepository<Student,Integer> {
    Integer deleteAllByIdIn(Collection<Integer> ids);
}

实体

@Entity注解不要掉了

package com.example.student.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

/**
 * @Desc 学生实体类
 */
@Table(name = "student")
@Entity
@Setter
@Getter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Student implements Serializable {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    private Integer age;
    private String grade;
}

启动类

package com.example.student;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class StudentApplication {

    public static void main(String[] args) {
        SpringApplication.run(StudentApplication.class, args);
    }

}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值