作者:小小的bug前言 本篇文章主要介绍的是Springboot整合SpringDataJPA基于Restful风格实现增删改查功能。
链接:https://www.jianshu.com/p/8ef1d5e0902c
Spring Boot介绍
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.基于Restful风格实现增删改查功能
一、Restful风格介绍 是一种网络应用程序的设计风格和开发方式,REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
每一个URI代表1种资源;
客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
二、开发准备 1、新建数据库和表 在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;
2、修改pom文件,添加依赖
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
3.工程结构 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
4.修改application.yml文件,添加数据库连接属性
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
三、编码 1.在common中创建公共类 1.1 封装分页结果PageResult
@Data
1.2 封装统一返回结果
@Data
1.3 返回状态码
public
2.在entity中新建实体类
@Data
注解:Data:安装lombok插件再使用该注解可省略getter/setter、无参构造等方法,具体使用见文章https://www.lxgblog.com/article/1572329460
Entity:对实体注释,声明实体。
Table:与数据库表绑定。
Id:声明Id。
GeneratedValue(strategy = GenerationType.IDENTITY):数据库主键自增。
3.在dao中新建UserDao UserDao需要继承JpaRepository, JpaSpecificationExecutor,
JpaRepository<>泛型的第二个参数与id有关,如findById(id)的id类型
public
4.service层新建UserService
@Service
5.controller层
@RestController
【oracle|oracle 授权 增删改查权限_Springboot整合SpringDataJPA基于Restful风格实现增删改查功能...】@PathVariable注解的参数与@RequestMapping中value中的{}内参数一致。四、测试 启动Application 之后,使用postman工具进行接口的测试。postman的使用教程查看另一偏博文。
1.新增
文章图片
image
2.根据id属性删除,再次查询所有,会发现少了一条
文章图片
image
3.根据id属性修改,再次查询所有,会发现已经改变。
文章图片
image
4.查询所有
文章图片
image
5.根据id属性查询
文章图片
image
6.条件+age排序查询
文章图片
image
6.条件+age排序+分页查询
文章图片
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
推荐阅读
- @SpringBootApplication注解的理解
- SpringBootSpringApplicationRunListener 是干啥的
- SpringBoot整合Mybatis进行单元测试mapper和xml路径不一致出现的诡异问题
- SpringBoot org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): mapper.x
- 移动端车牌识别安卓TF卡授权
- SpringBoot_application.yaml配置
- IDEA访问不到SpringBoot项目webapp下的内容
- Springboot mybatis generate 自动生成实体类和Mapper
- springboot|Springboot+Vue+Element实现的CRM管理系统