带你搭一个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多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!
觉得我的文章写得不错,不妨点一下赞!