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

前言

只有光头才能变强。

文本已收录至我的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多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

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

原文地址:https://www.cnblogs.com/Java3y/p/10583162.html

时间: 2024-08-03 19:42:53

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

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

前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBoot+SpringData JPA的环境,测试接口的时候也成功获取得到数据了. 带你搭一个SpringBoot+SpringData JPA的Demo 我的目的是做一个十分简易的管理系统,这就得有页面,下面我继续来讲讲我是怎么快速搭一个管理系统的. ps:由于是简易版,我的目的是能够快速搭建,而不在

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

开发typescript项目有一些现成的脚手架,比如:typescript-library-starter,它的配置齐全,更适合用在实际项目开发上.其实在学习阶段可以自己搭建一个简单的typescript运行环境,只用作学习typescript语法. 初始化项目 依次执行: mkdir ts-learn-demo cd ts-learn-demo npm init -y 然后全局安装 typescript,便于在任意文件夹使用 tsc 命令: // 安装失败的话请以管理员身份运行,此处是sudo

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

SpringData简介 SpringData JPA的目的是统一各种关系数据库的操作,底部用了Hibernate对JPA的实现 整合SpringData JPA JPA:ORM(Object Relational Mapping): 1).编写一个实体类(bean)和数据表进行映射,并且配置好映射关系: //使用JPA注解配置映射关系 @Entity //告诉JPA这是一个实体类(和数据表映射的类) @Table(name = "tbl_user") //@Table来指定和哪个数据

Springboot集成SpringData JPA

序 StringData JPA 是微服务框架下一款ORM框架,在微服务体系架构下,数据持久化框架,主要为SpringData JPA及Mybatis两种,这两者的具体比较,本文不做阐述,本文只简单阐述SpringData JPA的使用方法. 简介 SpringData JPA的Repository接口介绍,本文主要介绍CrudRepository.PagingAndSortingRepository.JpaSpecificationExecutor. 示例 pom.xml <!--Spring

SpringData JPA实现CRUD,分页与多参数排序

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库.Map-Reduce 框架.云数据服务等等,SpringData JPA是简化创建 JPA 数据访问层和跨存储的持久层功能,通过一个接口的继承即可实现简单的CRUD. 数据库的连接与项目的构建不说了,可以参考:springboot实战SpringDataJPA.我采用的是eclipse构建的普通的springboot项目. 一.创建表与实体类映射 @Entity @Table(name

从一个简单的 JPA 示例开始

本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例:接着重构该示例,并引入 Spring 框架,这两部分不会涉及过多的篇幅,如果希望能够深入学习 Spring 和 JPA,可以根据本文最后提供的参考资料进一步学习. 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之

springBoot+SpringData 整合入门

SpringData概述 SpringData :Spring的一个子项目.用于简化数据库访问,支持NoSQL和关系数据存储.其主要目标是使用数据库的访问变得方便快捷. SpringData 项目所支持NoSQL存储: MongoDB(文档数据库) Neo4j(图形数据库) Redis(键/值存储) Hbase(列族数据库) SpringData 项目所支持的关系数据存储技术: JDBC JPA Spring Data : 致力于减少数据访问层 (DAO) 的开发量. 开发者唯一要做的,就只是声

SpringData JPA之方法名查询的关键字表

在springdata jpa 中我们经常会对数据库进行各种各样的CURD操作.比如,查询操作.当然对于一些简单业务的CURD操作由jpa自带的JpaRepository接口就行已经可以满足了,但是往往在开发中需求的复杂程度是不能够预测的,所以构建一些能自适应相对复杂业务的CURD操作是很有必要的.这时候我们也可以选择采用@Query注解进行原生SQL语句的编写.获取采用@Query注解编写SpEL语句进行着对数据库的CURD操作.而现在我要说的是采用jpa 提供的方法名派生查询的方式.比如在P

SpringData JPA查询分页demo

SpringData JPA 的 PagingAndSortingRepository接口已经提供了对分页的支持,查询的时候我们只需要传入一个 org.springframework.data.domain.Pageable 接口的实现类,指定PageNumber和pageSize即可 springData包中的 PageRequest类已经实现了Pageable接口,我们可以直接使用下边是部分代码: DAO: package com.jiaoyiping.jdjy.sourcecode.dao