logo头像

一路过来,不过游牧自己。。

手撕SpringBoot(二)

SpringBoot使用SpringDataJPA完成CRUD

在我们平时的项目中,数据的存储以及访问都是最为核心的关键部分,现在有很多企业采用主流的数据库,如关系型数据库:MySQL,oracle,sqlserver。非关系型数据库:redis,mongodb等。SpringBoot为我们提供了很多种的数据源库来做数据存储和读取。本文以MySQL为例来讲本章内容。所以本章的目的就是使用SpringBoot去访问我们的数据库,结合SpringJPA完成CRUD简单操作。
还是和上一章相同,但是构建的时候除了要web组件,还需要导入的是Mysql和JPA的组件,基本如下图所示:
SpringBoot(二)2
在pom.xml中记得要注释掉scope标签。

配置数据源和JPA

springBoot中吗,用yml文件可以替代xml中一系列复杂的标签,所以我们的配置都可以在yml中去编写,我们在properties.yml中去配置数据源信息,也就是DataSource,具体示例可以看下面:

在本地数据库中我们可以建立一张表,这张表是代表着你要建立的实例:

相应的,我们可以建立实例,也就是对象类去对应数据库表中的数据:
在这,介绍一种比较好的数据库表转变成实体类的好方法,当然,一般企业都会有比较好的工具去生成。这里针对学习者,我们可以用一些比较简通用的方法:

###数据库表转化为实体类的方法:
(1)先设置右方DataBase,可设置URL,账号密码等,如下:


(2)配置hibernate文件(可百度)
配置一下hibernate配置文件。
在资源文件下新建一个hibernate.cfg.xml配置文件。并输入以下内容。

xml文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/test</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- JDBC connection pool (use the built-in) -->
<!--
<property name="connection.pool_size">1</property>
-->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<!--
<property name="hbm2ddl.auto">update</property>
-->

</session-factory>
</hibernate-configuration>

如图:

调出生成实体类的配置工具

保存后。在主面板左侧有persistence,在hibernate图标上点击右键-Generate Persistence Mapping-By Database Scheme。

配置选项
(1)数据源选择
(2)生成实体类的位置
(3)实体类的前缀和后缀
(4)可以全选表,或是全不选表
(5)可以生成hibernate的实体类对应的xml文件
(6)展开表之后可以修改对应之间的类型。

然后选中需要执行的数据库表。

查看导出的效果


(为了好理解,图有点多)
总结就是:生成实体类工具:View–Tool windows–Persistence,保存后。在主面板左侧有persistence,在hibernate图标上点击右键-Generate Persistence Mapping-By Database Scheme。然后选择路径和表。

编写JPA

继承JpaRepository。泛型参数,第一个是实体,第二个是主键类型。继承关系,如下所示,JpaRepository-PagingAndSortingRepository,QueryByExampleExecutor,其中PagingAndSortingRepository又继承了CrudRepository(这个中包含了CRUD操作),PagingAndSortingRepository又多实现了两个分页的函数,QueryByExampleExecutor是为排序提供的操作.

图10
我们UserJPA继承了JpaRepository接口(SpringDataJPA提供的简单数据操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)、Serializable(序列化接口)。
我们并不需要做其他的任何操作了,因为SpringBoot以及SpringDataJPA会为我们全部搞定,SpringDataJPA内部使用了类代理的方式让继承了它接口的子接口都以spring管理的Bean的形式存在,也就是说我们可以直接使用@Autowired注解在spring管理bean使用
然后service去编写查询删除添加等方法,JPA都能简单提供,以删除方法为例

最后访问controller就可以查看了:

思考,所走路,越努力,越幸运!
————-YoungerFary

微信打赏

赞赏是不耍流氓的鼓励