前言

只有光头才能变强。

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

不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的。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.Driverurl: jdbc:mysql://填写自己的机器:3306/填写自己的库?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC# JPA配置jpa:hibernate:ddl-auto: updateshow-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 {@Autowiredprivate UserRepository userRepository;@Overridepublic List<User> getAllUser() {return userRepository.findAll();}
}

UserService图如下:

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

七、写一个UserController

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

UserController代码如下:


@RestController
public class UserController {@Autowiredprivate 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多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

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

转载于:https://www.cnblogs.com/Java3y/p/10583162.html

带你搭一个SpringBoot+SpringData JPA的环境相关推荐

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

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

  2. 小程序服务器搭建前后端交互,手把手带你搭一个简单的微信小程序(包括前后端)...

    开发小程序除了大家能看到的客户端,前端小程序是如何与后端服务器进行数据交互的呢? 本文将通俗易懂的讲一下.这里以nodejs为例来进行讲解 1.首先要在服务器上安装nodejs服务器: ​ wget ...

  3. SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合

    一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...

  4. SpringData JPA 之疑难杂症

    SpringData JPA 之疑难杂症 1.JPA自动建表不生成外键 SpringBoot项目搭配的JPA使用时候,有一对多的关系注解,那么自动会生成外键.外键在有些时候,会导致代码不能走通,我们不 ...

  5. SpringData JPA条件查询、排序、分页查询

    前言 在刚开始学习的时候,在dao的定义的接口需要继承JpaRepository<T, ID>接口和JpaSpecificationExecutor< T >接口,但是一直以来 ...

  6. 七十三、SpringBoot整合Jpa

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 这里需要注意的是:jpa ...

  7. Jpa第一话 -- Springboot集成Jpa和Mybatis以及Jpa的最全使用

    本文主要记录spring-boot-starter-data-jpa的详细使用. 在做一些小型无并发的项目时,说实话第一个想到的就是Jpa,一个Entity走天下. 1.Spring Jpa的使用 基 ...

  8. 整理代码,将一些曾经用过的功能整合进一个spring-boot

    一 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 功能 1. ...

  9. SpringBoot实现JPA的save操作

      在一次参与公司的技术讨论会上,一位同事在演示SpringBoot的JPA的操作时,发现SpringBoot的JPA的save操作时,发现会先有select再insert,然后老板说,我们在网关已经 ...

最新文章

  1. Android文件系统深入剖析
  2. Dubbo 如何成为连接异构微服务体系的最佳服务开发框架
  3. MPB:湖南农大尹杰组-猪粪便来源乳酸菌分离技术
  4. 九度OJ-1042-最长公共子序列(LCS)
  5. 【独立游戏】黎明之刃——3D硬核ARPG游戏
  6. tensorflow1中如何设置GPU的使用
  7. 怎样从10亿查询词找出出现频率最高的10个
  8. ACM OJ反馈结果大全
  9. [转]计算机专业方面的期刊介绍
  10. 什么是计算机的网络体系结构,什么是网络体系结构 网络体系结构介绍【详解】...
  11. c语言遍历文件obt,二维电子化合物Ca2N和Y2C高压结构研究.pdf
  12. (转)SQL Server 数据类型映射
  13. NLog文章系列——入门教程(转)
  14. 如何 方法内指令重排 进制_宁波PLC编程培训:新手如何学习PLC?
  15. python 埋点 库_vue 友盟统计埋点插件
  16. 一切皆服务:以蓝天的角度看待云
  17. 美国习惯用语flip out的中英文翻译解释和例子
  18. 解决Could not resolve XXX
  19. 解决在谷歌浏览器上倍速播放视频适用B站 慕课MOOC 百度网盘(弃用) 谷歌内置播放器最高16倍速
  20. CC3200——管脚的细节

热门文章

  1. ECS(Linux)连接RDS,使用命令行方式连接实例
  2. 快起床刷题去,别人把你offer拿走啦
  3. Spring Boot整合Spring Data JPA操作数据
  4. Redis 难题突破,最经典 46 题含详细解析
  5. python实现二叉树的重建2 之由中序遍历和后序遍历重建
  6. dbeaver数据库工具
  7. Lock、ReentrantLock、ReentrantReadWriteLock原理及应用深入解析
  8. 内存接口芯片,服务器平台,PCIe 芯片
  9. 关于TVM的点滴记录
  10. 色彩(颜色)空间原理(下)