作者:小小的bug
链接:https://www.jianshu.com/p/8ef1d5e0902c
本篇文章主要介绍的是Springboot整合SpringDataJPA基于Restful风格实现增删改查功能。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,我们不必像Spring MVC一样写大量的xml配置文件。
GitHub源码链接位于文章底部。
总结来说,springboot是一个快速开发的框架,开箱即用,提供了各种默认配置来简化项目配置,能够集成第三方框架,这是通过maven依赖实现的,它简化了xml,采用注解的形式,springboot还内嵌了tomcat容器,帮助开发者快速开发与部署。
新建一个maven项目,在pom文件中添加以下依赖
这个依赖引入了mvc框架,开启了接口访问的方式,它也正是以这种maven依赖的方式集成第三方框架的。
org.springframework.bootspring-boot-starter-web2.1.3.RELEASE
在controller、service等同级目录下,创建Application.java启动类
SpringBootApplication注解=Configuration注解+EnableAutoConfiguration注解+ComponentScan注解。
Configuration注解负责初始化并启动spring容器,这个类内部方法上使用Bean注解可以实现spring容器的注入。
EnableAutoConfiguration注解负责初始化配置,启动springboot需要启动的项,后边详细解释此注解的作用。
ComponentScan注解负责扫包,springboot启动程序后,能够被外部访问的只有被SpringBootApplication注解扫描到的包下的类。
SpringBootApplication注解启动类默认扫包范围是当前包下或者子包下所有的类。
@SpringBootApplication
@RestController
成功启动主程序之后,浏览器输入 http://localhost:8080/hello 便可以查看信息。(因为没有配置端口,默认端口就是8080)
在resource资源目录下创建application.yml文件
server:
port: 8081
重新启动后,浏览器输入 http://localhost:8081/hello 可以查看信息。
application.yml文件内容的格式,以上文中的端口为例:
server+冒号+空格,然后换行,+一个tab键占位符+port+冒号+空格+8080,
意为server属性下的port属性的值为8080.
是一种网络应用程序的设计风格和开发方式,REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
每一个URI代表1种资源;
客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
在MySql中创建一个名为springboot的数据库和名为一张t_user的表。
CREATE DATABASE `springboot`;
USE `springboot`;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(10) DEFAULT NULL COMMENT '姓名',
`age` int(2) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
org.springframework.bootspring-boot-starter-parent2.1.3.RELEASE
org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-data-jpaorg.springframework.bootspring-boot-starter-testtestmysqlmysql-connector-java5.1.39org.projectlomboklombok1.16.20
src/main/java**/*.xmltrue
com.lxg.springboot.controller - Controller 层
com.lxg.springboot.dao - 数据操作层 DAO
com.lxg.springboot.common - 存放公共类
com.lxg.springboot.entity - 实体类
com.lxg.springboot.service - 业务逻辑层
Application - 应用启动类
application.yml - 应用配置文件,应用启动会自动读取配置
image
server:
port: 8080
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8
@Data
@Data
public
@Data
注解:Data:安装lombok插件再使用该注解可省略getter/setter、无参构造等方法,具体使用见文章https://www.lxgblog.com/article/1572329460
Entity:对实体注释,声明实体。
Table:与数据库表绑定。
Id:声明Id。
GeneratedValue(strategy = GenerationType.IDENTITY):数据库主键自增。
UserDao需要继承JpaRepository, JpaSpecificationExecutor,
JpaRepository<>泛型的第二个参数与id有关,如findById(id)的id类型
public
@Service
@RestController
@PathVariable注解的参数与@RequestMapping中value中的{}内参数一致。
启动Application 之后,使用postman工具进行接口的测试。postman的使用教程查看另一偏博文。
image
image
image
image
image
image
image
经过上面的例子可以发现,增删改查的url都是同一个,即localhost:8080/user, 如果有一些简单的条件,则放到它的后面作为条件。作为区别,使用了不同的请求方式,如Post,Get,Put,Delete等。
本文GitHub源码:https://github.com/lixianguo5097/springboot/tree/master/springboot-jpa
(完)
[最近发表]
Springboot整合多数据源以及多数据源中的事务处理(附源码)
Git 从入门到精通,这篇包教包会!
SpringBoot+Vue 前后端分离开发首秀
具有完整讲解文档的7个Java开源项目,值得一学!
SQL 性能优化,太太太太太太太有用了!
面试:HashMap 夺命二十一问!
阿里官方Redis开发规范!
我去!原来单点登录这么简单,这下糗大了!
SQL 语法速成手册
数据量很大,分页查询很慢,有什么优化方案?
讲述:一个月薪 12000 的北京程序员的真实生活
数据持久化框架为什么放弃 Hibernate、JPA、Mybatis,最终选择 JDBCTemplate!
长按关注,学习Java