Spring Data JPA例子代码[基于Spring Boot、Mysql]

yizhihongxing

下面是“Spring Data JPA例子代码[基于Spring Boot、Mysql]”的完整攻略。

简介

Spring Data JPA是基于JPA规范的一种框架,结合Spring Data,可以方便地访问和操作关系型数据库。本文基于Spring Boot和Mysql数据库,演示了Spring Data JPA的使用方法。

前置准备

在开始之前,您需要准备以下工具和环境:

  • JDK 1.8或以上
  • IDE(推荐使用IntelliJ IDEA)
  • Maven
  • Mysql数据库

创建Spring Boot项目

  1. 打开IDE,创建一个新的Maven项目。
  2. 输入项目的名称和groupId、artifactId等信息。
  3. 在创建项目时,选择“Spring Initializr”和“Web”选项。
  4. 点击“Next”进入下一步,选择需要的依赖,这里我们需要选择“Spring Data JPA”和“MySQL Driver”。
  5. 点击“Finish”完成项目的创建。

配置文件

在项目中,我们需要配置连接Mysql数据库的相关信息。在src/main/resources目录下,创建application.properties文件,输入以下内容:

spring.datasource.url=jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

其中,spring.datasource.url表示数据库的连接地址;spring.datasource.username和spring.datasource.password分别表示Mysql登录的用户名和密码;spring.jpa.hibernate.ddl-auto表示数据表的自动创建模式(update表示更新模式,每次启动时会检查实体类,如果有变化则更新表结构);spring.jpa.show-sql表示是否输出SQL日志;spring.jpa.properties.hibernate.format_sql表示输出日志时是否格式化SQL。

实体类

在Spring Data JPA中,实体类是指与数据库表相对应的Java类。在本例中,我们创建一个实体类User,代码如下:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id; // 主键ID
    private String name; // 用户名
    private Integer age; // 年龄
    ... // 省略getter和setter方法
}

其中,@Entity注解表示该类是实体类;@Table注解表示对应的数据库表名;@Id注解表示主键;@GeneratedValue注解表示主键自增长;下面的字段分别表示id、name、age三个属性,其中id为主键。需要注意的是,每个实体类必须要有一个主键。

Repository

在Spring Data JPA中,Repository是指通过继承JpaRepository接口,对实体类进行增删改查操作的接口。代码示例如下:

public interface UserRepository extends JpaRepository<User, Integer> {
}

其中,User表示实体类,Integer表示主键类型。在这个接口中,我们不需要编写任何的方法实现,在使用时只需要调用该接口中已有的方法即可。

Service

Service层是对Repository的进一步封装,是在业务逻辑层对数据进行处理和操作的地方。本例中,我们创建UserService接口和UserServiceImpl实现类,代码如下:

public interface UserService {
    List<User> findAll();
    User findById(Integer id);
    void save(User user);
    void delete(Integer id);
}

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserRepository userRepository;

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

    @Override
    public User findById(Integer id) {
        return userRepository.findById(id).orElse(null);
    }

    @Override
    public void save(User user) {
        userRepository.save(user);
    }

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

其中,UserService接口定义了findAll、findById、save和delete四个方法;UserServiceImpl实现了UserService接口,并注入了UserRepository。在findAll、findById、save和delete四个方法中,我们直接调用了UserRepository的相应方法完成对实体类User的操作。

Controller

Controller层是前端交互的入口,该层接收前端的请求,并将请求转发到相应的Service层或处理完直接返回结果。本例中,我们创建UserController类,代码如下:

@RestController
public class UserController {

    @Autowired
    UserService userService;

    @GetMapping("/users")
    public List<User> findAll() {
        return userService.findAll();
    }

    @PostMapping("/users")
    public void save(@RequestBody User user) {
        userService.save(user);
    }

    @GetMapping("/users/{id}")
    public User findById(@PathVariable Integer id) {
        return userService.findById(id);
    }

    @DeleteMapping("/users/{id}")
    public void delete(@PathVariable Integer id) {
        userService.delete(id);
    }
}

其中,@RestController注解表示该类是Controller层,并且所有方法的返回值都会被转换为JSON格式;@Autowired注解表示注入UserService;@GetMapping、@PostMapping、@DeleteMapping注解表示对应的HTTP请求方法和路径。在这个类中,我们调用了UserService的相应方法完成对实体类User的操作。

运行测试

现在,我们已经完成了项目的搭建和配置,可以进行测试了。在IDE中,运行该项目,访问http://localhost:8080/users路径,可以看到数据库中的所有User数据。接下来,我们可以通过Postman等工具进行增删改查测试,以验证项目是否正常运行。

示例说明

为了更好地说明Spring Data JPA的使用方法,这里举两个例子。

示例一:新增数据

在UserController中,新增一个save方法,用于保存一个新的User对象。代码如下:

@PostMapping("/users")
public void save(@RequestBody User user) {
    user.setId(null); // 将ID设为null,使其自动增长
    userService.save(user);
}

在这个方法中,我们将接收到的User对象的ID设为null,由于我们在User实体类中使用了@GeneratedValue自增长主键,因此在保存该对象时,将会自动插入一条新的数据到数据库中。

示例二:删除数据

在UserController中,新增一个delete方法,用于删除指定ID的User数据。代码如下:

@DeleteMapping("/users/{id}")
public void delete(@PathVariable Integer id) {
    userService.delete(id);
}

在这个方法中,我们调用了UserService的delete方法,该方法会调用UserRepository的deleteById方法,删除指定ID的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Data JPA例子代码[基于Spring Boot、Mysql] - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • java实现肯德基收银系统

    Java实现肯德基收银系统攻略 肯德基是一个全球知名的快餐品牌,设计和实现它的收银系统需要考虑到多种因素,例如订单管理、菜品管理、价格计算、支付方式、交易记录等。本文将介绍如何使用Java语言来设计和实现肯德基收银系统,包括以下步骤: 确定系统需求 首先需要明确肯德基收银系统需要实现的功能,包括: 菜品列表:系统需要维护肯德基提供的所有菜品的名称、价格和编号…

    Java 2023年5月30日
    00
  • 分析SpringBoot的启动原理

    下面我会详细地讲解分析Spring Boot启动原理的攻略,内容如下。 什么是Spring Boot Spring Boot 是一个基于Spring Framework构建的用于快速构建Web应用程序和微服务的开源框架。 Spring Boot的主要目的是简化Spring的配置和开发过程。Spring Boot集成了Spring框架,内嵌了Tomcat、Je…

    Java 2023年5月15日
    00
  • 使用jQuery.form.js/springmvc框架实现文件上传功能

    下面是关于“使用jQuery.form.js/SpringMVC框架实现文件上传功能”的完整攻略,包含两个示例说明。 使用jQuery.form.js/SpringMVC框架实现文件上传功能 在本文中,我们将介绍如何使用jQuery.form.js和SpringMVC框架实现文件上传功能。 步骤1:添加依赖 首先,我们需要在pom.xml中添加SpringM…

    Java 2023年5月17日
    00
  • java交换排序之奇偶排序实现方法

    Java交换排序之奇偶排序实现方法 简介 奇偶排序(Odd-Even Sort)是一种并行的排序算法,可以在多核平台上利用多线程来实现排序。该算法的思路是将序列分成奇数和偶数两个子序列,分别进行排序,然后再归并为完整的有序序列。 奇偶排序的实现 奇偶排序的实现非常简单,可以用两层循环来实现。偶数轮从第一个元素开始遍历,与其后面一个元素进行比较,如果顺序不对就…

    Java 2023年5月19日
    00
  • JAVA/JSP学习系列之二(Tomcat安装)

    JAVA/JSP学习系列之二(Tomcat安装) 概述 本文将介绍如何安装Tomcat服务器。Tomcat是一种开放源代码软件,它实现了Java Server Pages和Java Servlet技术,用来提供Java Web应用服务。Tomcat服务器是一个轻量级的应用服务器,可以运行在多个操作系统平台上。 环境要求 Java Development Ki…

    Java 2023年6月15日
    00
  • java实现文件上传、下载、图片预览

    Java实现文件上传、下载、图片预览的完整攻略 上传文件 首先在前端页面设计一个上传文件的form表单,并设置enctype为multipart/form-data。form表单提交时,浏览器会解析其中的文件,并将其封装到一个HTTP请求中,在请求的正文中发送到服务器。 <form action="/upload" method=&…

    Java 2023年5月19日
    00
  • Sprint Boot @RestControllerAdvice使用方法详解

    @RestControllerAdvice是Spring Boot中的一个注解,它用于全局处理异常和返回值。在使用Spring Boot开发Web应用程序时,@RestControllerAdvice是非常重要的。本文将详细介绍@RestControllerAdvice的作用和使用方法,并提供两个示例说明。 @RestControllerAdvice的作用 …

    Java 2023年5月5日
    00
  • Mybatis Plus 代码生成器的实现

    MyBatis Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上新增了很多实用的功能,其中的代码生成器可以帮助我们快速生成基础的代码,提升开发效率。 MyBatis Plus 代码生成器是通过配置数据库连接信息、配置表、配置输出路径等,生成对应的 Java 代码,包括实体类、DAO 接口、以及对应的 XML 映射文件,同时也支持生成 C…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部