前言

只有光头才能变强。

文本已收录至我的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就行了。

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

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

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

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

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

二、完善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文件的完整依赖图如下:

三、配置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文件完整图如下:

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

四、写一个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实体图如下:

五、写一个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图如下:

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

六、写一个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图如下:

为啥会有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代码图如下:

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

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

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

最后

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

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

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

带你搭一个SpringBoot+SpringData JPA的环境的更多相关文章

  1. 【极简版】SpringBoot+SpringData JPA 管理系统

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBo ...

  2. 第11章—使用对象关系映射持久化数据—SpringBoot+SpringData+Jpa进行查询修改数据库

    SpringBoot+SpringData+Jpa进行查询修改数据库 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分.但它又不限于EJB 3.0,你可以在Web应用.甚至桌面应用 ...

  3. 从头带你撸一个Springboot Starter

    我们知道 SpringBoot 提供了很多的 Starter 用于引用各种封装好的功能: 名称 功能 spring-boot-starter-web 支持 Web 开发,包括 Tomcat 和 spr ...

  4. 尝试自己搭一个简单的typescript运行环境

    开发typescript项目有一些现成的脚手架,比如:typescript-library-starter,它的配置齐全,更适合用在实际项目开发上.其实在学习阶段可以自己搭建一个简单的typescri ...

  5. Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA

    大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...

  6. 带着新人学springboot的应用08(springboot+jpa的整合)

    这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合. 说实话,听别人都说spring data ...

  7. 尚硅谷springboot学习34-整合SpringData JPA

    SpringData简介

  8. SpringBoot整合SpringData JPA入门到入坟

    首先创建一个SpringBoot项目,目录结构如下: 在pom.xml中添加jpa依赖,其它所需依赖自行添加 <dependency> <groupId>org.springf ...

  9. SpringBoot图文教程12—SpringData Jpa的基本使用

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

随机推荐

  1. jvm GC

    JavaGC.新生代.老年代 Java 中的堆是 JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( ...

  2. 最详细的JavaWeb开发基础之java环境搭建(Windows版)

    阅读文本大概需要 3 分钟. 首先欢迎大家来学习JavaWeb,在这里会给你比较详细的教程,从最基本的开始,循序渐进的深入.会让初学者的你少踩很多坑(大实话),如果你已经掌握了JavaWeb开发的基础 ...

  3. BOM,DOM常见操作和DHML

    BOM (Browser Object Model)浏览器对象模型,控制浏览器的一些行为 window对象 代表一个HTML文档 属性 页面导航的5个属性 self, parent, top, ope ...

  4. 网上整理的对于Rest和Restful api的理解

    一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译 ...

  5. java中的取整(/)和求余(%)

    1.取整运算符取整从字面意思理解就是被除数到底包含几个除数,也就是能被整除多少次,那么它有哪些需要注意的地方呢?先看下面的两端代码: int a = 10; int b = 3; double c= ...

  6. jmeter使用csv进行参数化(二)

    上篇说的是csv的第一种方法进行参数化,这篇说第二种方法. 重新打开录制好的脚本. 1.提取函数变量 打开选项--函数助手对话框 设置对话框参数: 选择csvread,然后将变量文件的路径填写进来.添 ...

  7. java 基础之枚举

    问题:对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个 解决办法: 1)  在setGrade方法中做判断,不符合格式要求就抛出异常 2)  直接限定用户的选择,通过自定义类模拟枚举的 ...

  8. JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果

    先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System ...

  9. Eclipse中Maven Install时发生错误

    问题描述 要把一个本地包保存进本地maven库中, 所以对该project执行了run as => Maven Install, 结果报下面的错误. 解决办法 1. 通过命令窗口手动创建这两个文 ...

  10. 多线程动态规划算法求解TSP(Traveling Salesman Problem) 并附C语言实现例程

    TSP问题描述: 旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须 ...