共计 4351 个字符,预计需要花费 11 分钟才能阅读完成。
前言
只有光头才能变强。
文本已收录至我的 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.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 多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!
觉得我的文章写得不错,不妨点一下赞!