带你搭一个SpringBoot+SpringData JPA的环境

SpringBoot—访问关系型数据库—SpringData JPA 一、SpringData JPA是什么 上一节学习了如何入门SpringBoot,本篇章介绍springboot对数据库是如何进行访问的。在介绍之前,有必要了解一下SpringDataJPA,这是SpringCore中的一个项目,致力于简化对数据库的访问,增强了ORM的操作。对于JPA(Java persisten API),全称为Java持久化API,是JAVAEE中的一套规范API。它推 阅读详情

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的。SpringBoot和SpringData JPA的好处我就不说了,当时我学习的时候也粗略做过笔记,有兴趣的同学可以去看看

其实我在学完SpringBoot和SpringData JPA了之后,写过一个小Demo,但一直没发出来而已(懒)。而最近要写毕业设计的一个管理模块(CRUD),并且我又没写过相关SpringBoot和SpringData JPA的搭建教程,所以就诞生了这篇文章了。

一、从零搭建环境

本次我使用的是IDEA编辑器来搭建SpringBoot和Spring Data JPA环境

首先,我们在IDEA新建项目的时候,选择Spring Initializr,然后next就行了。

选择Spring Initializr

然后填写一些项目的资料(其实这些资料也无关紧要,自己看着填就好了),随后点击next

填写一些项目的资料

随后在勾选的时候,我就随手勾选了个LomBok(其他的没勾选,反正后面我们可以在pom文件下配置嘛)。可以看出,本次SpringBoot的版本为2.1.3。

  • 注:如果不太了解LomBok的同学,建议去搜一下。这是一个非常好用的插件,有了它我们可以不用写繁琐的set/get方法。记得:使用lomBok还需要在IDEA下安装插件

勾选了个LomBok

然后IDEA就会帮我们创建出Maven管理下SpringBoot的项目啦,此时一般我们会指定自己的下载好的Maven,重写它的settings.xml文件

配置maven

然后Maven就一直在下载相关的依赖啊,必要的插件啊(我等了差不多10分钟吧,这个时间可以去倒杯Java喝喝.haha),等Maven下载完之后,我们的项目就成了下面那个样子了(注:原生的是application.properties文件的,我改了一下后缀,我比较喜欢yml格式的):

已经是一个SpringBoot项目了

二、完善pom文件

现在pom文件只有SpringBoot和LomBok的依赖,想要完成CURD的功能,我们需要用到Spring Web模块、Spring Data JPA以及MySQL驱动依赖,所以我们得在pom文件下加入这些依赖:


<!--Web必要的-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--spring data jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- MySQL的java驅動 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

pom文件的完整依赖图如下:

pom文件的完整依赖图

三、配置yml文件

既然我们用到了SpringData JPA和MySQL,我们得为其进行配置最基础的信息。比如说数据库的用户名和密码,相对应的库,以及SpringData JAP的策略。


#服务端容器的配置
server:
  port: 8887


#数据库配置
spring:
  datasource:
    username: 填写自己的
    password: 填写自己的
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://填写自己的机器:3306/填写自己的库?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    # JPA配置
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

    # formatSQL得这样写
    properties:
      hibernate:
        format_sql: true

yml文件完整图如下:

yml文件完整图

数据库的信息填写成自己的就行了。

四、写一个User实体

我毕业设计其中就有对用户的管理,我们用户实体设计如下(大家的当然可以跟我的不一样了,我这只是样例):

package com.zhongfucheng.example.demo.domain;

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

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

/**
 * 存储用户的信息
 *
 * @author ozc
 * @version 1.0
 */
@Entity // jpa的注解,需要加
@Table(name = "table_user") // 指定数据库的表名
@Data // lombok 
public class User implements Serializable {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String userId;

    private String userNickname;

    private String userPassword;

    private String userEmail;

    private Integer actiState;

    //激活成功与激活失败常量
    public static final int ACTIVATION_SUCCESSFUL = 1;
    public static final int ACTIVATION_UNSUCCESSFUL = 0;

    private String actiCode;

    private Date tokenExptime;

}

再补充一句:因为我们有了LomBok的Data注解,并且在IDEA已经下好的LomBok的插件,所以我们可以不用写set、get方法。

User实体图如下:

User实体图

五、写一个UserRepository

UserRepository是dao层的东西了,相当于UserDao/UserMapper,只是叫法不一样而已。比如在Struts2喜欢将名字取成xxxAction,而在SpringMVC喜欢将名字取成xxxxController。

一般地,我们将UserRepository继承JpaRepository就可以有对应的增删改查方法:


import com.zhongfucheng.example.demo.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;


/**
 * UserDao  操作数据库
 * @author ozc
 * @version 1.0
 */
public interface UserRepository extends JpaRepository<User, String> {

}

UserRepository图如下:

UserRepository图

ok,我们的UserRepository已经写好了,至于为啥我们传入<User, String>,点进去看一下就明白了:

T表示为我们实体的类型,ID表示为我们主键的类型

六、写一个UserService

我们就查user表所有的记录出来就好了,代码如下:


// 接口
public interface UserService {

    List<User> getAllUser();
}

// 实现
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

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

UserService图如下:

UserService图

为啥会有findAll()方法?因为我们的UserRepository 继承了JpaRepository

七、写一个UserController

UserController调用一下service的方法,看是否能返回成功,如果能返回成功,那说明我们的环境已经是ok的了。

UserController代码如下:


@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 得到所有用户
     */
    @GetMapping(value = "/user", produces = {"application/json;charset=UTF-8"})
    public void  getAllUser () {

        List<User> allUser = userService.getAllUser();

        for (User user : allUser) {
            System.out.println(user);
        }
    }
}

Controller代码图如下:

Controller代码图

八、测试一下看是否能返回数据

进入DemoApplication,右键,启动我们的SpringBoot项目:

启动SpringBoot项目

在浏览器输入我们的url:http://localhost:8887/user。然后我们从后台查看,打印出查询的SQL语句,已经后台已经打印表已有的记录。

打印出查询的SQL语句和已有的记录

最后

我们可以发现使用SpringBoot+SpringData JPA的方式,不需要很多的配置,不需要很多的代码就可以从数据库中查找出数据了。非常适合我们做一些简答的测试和小功能。如果对例子有疑问的同学应该是对SpringData JPA不太熟悉,建议去找找相关的教程看一下,相信你可以很快就入门了。

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

帅的人都关注了

觉得我的文章写得不错,不妨点一下赞!

用springboot+springdata-jpa+vue实现简单的前后端分离增删改查 用springboot+springdata-jpa+vue实现简单的前后端分离增删改查 话不多说 先上pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&gt... 阅读详情

相关推荐

SpringBoot与SpringData JPA的增删改查实践

SpringBoot是一个轻量级Java框架,旨在简化Spring应用的初始搭建以及开发过程。它提供了一种快速开发、配置简单、独立部署的解决方案。通过自动配置和起步依赖,SpringBoot将许多繁琐的配置步骤自动化,使得开发者能够专注于业务逻辑的实现。Java Persistence API (JPA) 是Java EE平台下的一个标准持久化解决方案。它旨在简化Java应用中对象关系映射的复杂性,并提供了一组标准的ORM操作。

weixin_42583683的博客 982

IDEA搭建SpringBoot

文章目录SpringBoot的环境搭建 SpringBoot的环境搭建 利用IDEA的SpringInitiar进行搭建 1、打开IDEA之后,点击File -> new -> project ,进去之后,找到Spring Initize 点击Spring Initialize之后,如果像上面一样使用default那个选项的话,那么就会有可能点击next之后,会出现加载很久的情况,那么这时候考虑使用阿里云代理即可,即勾选default下面的custom 2、上一步点击next之后,这时候就会

奋斗的龙猫的博客 2269

寒假实训笔记day01——认识M4单片机之STM32F405RGT6

认识M4单片机之STM32F405RGT6(含义、规格、参数)

weixin_47200070的博客 8551

带你搭一个SpringBoot+SpringData JPA的Demo

前言只有光头才能变强。不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoo...

3y 733

Computer Networks 和 Computer & Security投稿经验

论文投稿

qq_50604294的博客 9233

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 514

springboot整合jpa项目入门级别demo

springboot整合jpa项目入门级别demo前言一、新建一个空boot项目二、准备好数据库,下面以MySQL为主三、导入依赖四、生成JPA实体五、JPA基本注解六、JPQL 和 EntityManager七、配置文件八、demo包 前言 简单基础入门级别,有基础勿留香! 一、新建一个空boot项目 傻瓜式创建即可 二、准备好数据库,下面以MySQL为主 创建好测试表dog表,待用 三、导入依赖 下面依赖,后续会用到,直接贴上了 <!--本demo 核心依赖 begin--&g

@素素~的博客 2380

一份针对零基础学习AI Agent详细学习计划

以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能

sexy19910923的博客 1904

idea怎么搭建springboot

5、默认端口号为8080,我们可以在配置文件application.properties里修改端口号。

2301_78021017的博客 2464

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

BRepNet与图神经网络融合:提升3D CAD加工特征识别的精度与泛化能力

本文探讨了BRepNet与图神经网络(GNN)融合技术如何显著提升3D CAD加工特征识别的精度与泛化能力。通过将CAD模型视为图结构,利用GNN的消息传递机制增强对复杂拓扑关系的理解,并结合BRepNet的局部特征提取,该融合方法在MFCAD++数据集上实现了高达99.53%的准确率,有效解决了传统方法在处理复杂相交特征时的局限性,为智能制造提供了关键技术支撑。

android的专栏 775

idea必装的插件 Spring Boot Helper 插件(创建 Spring Boot 项目)

idea必装的插件 Spring Boot Helper 插件(创建 Spring Boot 项目)

q322359的博客 2万+

YOLOv11低照度目标检测优化方案:基于SCINet可训练预处理主干的全流程实现指南

创建一个新的Python文件,如。

FJN110的博客 188

idea加入springboot插件_带你搭一个SpringBoot+SpringData JPA的环境

前言只有光头才能变强。不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的。SpringBoot和SpringData JPA的好处我就不说了其实我在学完SpringBoot和SpringData JPA了之后,写过一个小Demo,但一直没发出来而已(懒)...

weixin_39957647的博客 349

第五节_PySide6基本窗口控件_主窗口和标签

本文介绍了PySide6中主窗口和标签控件的使用。主要内容包括: 窗口控件分类: QWidget是基础窗口部件,可作为独立窗口或子部件 QMainWindow提供标准应用程序框架,包含菜单栏、工具栏等 QDialog用于对话框,支持模态交互 主窗口创建: 演示了如何创建QMainWindow子类 实现了窗口居中、设置图标、状态栏等功能 提供了窗口几何信息的获取方法 QLabel标签控件: 继承自QFrame类 用于显示文本或图像 文章通过代码示例详细说明了主窗口的创建和使用方法,包括位置控制、图标设置等常见

su桥木的博客 1022

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

spring data jpa+springboot项目环境搭建及简单样例

打开idea,创建项目 File->New->Project Next 一路next,最终finish即可。(sql中可以有jpa选择如下) 我这里是使用稍微完整一点的依赖文件,直接覆盖pom.xml中的dependency即可。 覆盖的pom.xml文件如下 <?xml version="1.0" encoding="UTF-8"?> <p...

pan_xi_yi的博客 3410

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SpringBoot-SpringData-JPA集成

介绍 SpringDataJPA 的使用,包括:简介、SpringBoot集成、项目结构、框架特性、单元测试等;

BraveWangDev 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot整合Mybatis和SpringData JPA

SpringBoot整合MyBatis 1. 新建项目 使用IDEA和STS均可新建一个SpringBoot项目 2. 导入相关依赖 导入mysql驱动包和MMyBatis-Spring-Boot-Starter &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-conne...

qq_36297981的博客 6736

SpringBoot整合SpringData与JPA

前面说过对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。对我们来说只需要进行简单的设置即可。 结构示意图如下: 【1】SpringData 如下图所示,SpringBoot提供了许多dat...

小小默:进无止境 1万+

SpringBoot整合SpringData JPA

1.整合步骤 1.1.创建一个Maven工程 1.2.导入项目中需要的依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...

专业的计算机毕业设计指南 491

自动化SQL编写Springboot整合Springdata-jpa—让编程更简单

sql自动化配置架构Spring Data JPA

Java厂长 1553
上一篇: Java 8的Stream代码,你能看懂吗?
下一篇: 系统盘为啥往往是C盘?软件为啥希望把自己装在C盘上?
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值