12

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

 5 years ago
source link: https://segmentfault.com/a/1190000018624231?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

只有光头才能变强。

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

AVVvArE.png!web

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

jEJryiu.png!web

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

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

2yIV7nJ.png!web

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

mUniQrF.png!web

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

JzuaaqR.png!web

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

FvMf63q.png!web

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

z6BzEzF.jpg!web

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

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

bEJJVbQ.jpg!web

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

JnmiEvN.jpg!web

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

jIb6N3m.jpg!web

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

7BVbi2Q.jpg!web

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

neyaYnu.jpg!web

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

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

3uYJRjQ.jpg!web

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

bqy2Ibf.jpg!web

最后

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

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

iIBj2i2.jpg!web

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK