脚本宝典收集整理的这篇文章主要介绍了SpringBoot JPA实现REST,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在SPRing Boot中,使用Spring Data JPA和Spring Data Rest可以快速开发出一个RESTful应用。
这里的依赖除了数据库相关的依赖外,还有Spring Data JPA的依赖以及SpringData Rest的依赖。
<dePEndency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> <dependency> <groupId>MySQL</groupId> <artifactId>mySQL-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency>
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 123456 jpa: hibernate: ddl-auto: update #自动建表策略 update-每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新 # show-sql: true #是否把运行时的sql语句输出到控制台 database: mysql generate-ddl: true database-platform: org.hibernate.dialect.MySQL5InnoDBDialect #使用innodb引擎建表 properties: hibernate: format_sql: true #控制台输出格式化的sql data: rest: default-page-Size: 2 #每页默认记录数,缺省值为20 page-param-name: page #分页查询页码参数名,缺省值为page limIT-param-name: size #分页查询记录数参数名,缺省值为size sort-param-name: sort #分页查询排序参数名,缺省值为sort base-path: /api #base-path表示给所有请求路径都加上前缀 return-body-on-create: true #添加成功时是否返回添加内容 return-body-on-update: true #更新成功时是否返回更新内容
当然,这些xml配置也可以在Java代码中配置,且代码中配置的优先级高于application.yml配置的优先级
@configuration public class RestConfig implements RepositoryRestConfigurer { @override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.setDefaultPageSize(4) .setPageParamName("page") .setLimitParamName("size") .setSortParamName("sort") .setBasePath("/api") .setReturnBodyOnCreate(true) .setReturnBodyOnUpdate(true); } }
创建BookRepository类继承JpaRepository,JpaRepository中默认提供了一些基本的操作方法
@CrossOrigin @RepositoryRestResource(path = "api_book", collectionResourceRel = "books", itemResourceRel = "book" // ,exported = false ) public interface BookDAO extends JpaRepository<Book, Integer> { @RestResource(exported = false) void deleteById(Integer integer); List<Book> getBooksByAuthorStartingWith(String author); List<Book> getBooksByPriceGreaterThan(Float price); @Query(value = "select * From t_book where id=(select max(id) from t_book)", nativeQuery = true) Book getMaxIdBook(); @Query("select b from t_book b where b.id>:id and b.author=:author") List<Book> getBookByIdAndAuthor(@Param("author") String author, @Param("id") Integer id); @Query("select b from t_book b where b.id<?2 and b.name like %?1%") List<Book> getBooksByIdAndName(String name, Integer id); @RestResource(path = "author", rel = "author") List<Book> findByAuthorContains(@Param("author") String author); @RestResource(path = "name", rel = "name") Book findByNameEquals(@Param("name") String name); }
默认情况下,请求路径都是实体类名小写加s,如果开发者想对请求路径进行重定义,通过@RepositoryRestResource注解
默认的查询方法支持分页查询、排序查询以及按照id查询,如果开发者想要按照某个属性查询,只需在BookRepository中定义相关方法并暴露出去即可
默认情况下,凡是继承了Repository接口(或者Repository的子类)的类都会被暴露出来,即开发者可执行基本的增删改查方法。
CORS两种不同的配置方式,一种是直接在方法上添加@CrossOrigin注解,另一种是全局配置。全局配置在这里依然适用,但是默认的RESTful工程不需要开发者自己提供Controller,因此添加在Controller的方法上的注解可以直接写在BookRepository上
如果只需要某一个方法支持跨域,那么将@CrossOrigin注解添加到某一个方法上即可。
新增 insert:
PUT http://127.0.0.1:8081/api/api_book/2
Body 类型 : application/json
{
"name": "三国演义2",
"author": "罗贯中2"
}
修改 update:
PUT http://127.0.0.1:8081/api/api_book/2
Body 类型 : application/json
{
"name": "三国演义2",
"author": "罗贯中2"
}
删除 delete:
DELETE http://127.0.0.1:8081/api/api_book/2
查询 select:
GET http://127.0.0.1:8081/api/api_book?page=0&sort=id,desc
GET http://127.0.0.1:8081/api/api_book/1
GET http://127.0.0.1:8081/api/api_book/search/getBooksByAuthorStartingWith?author=鲁迅
GET http://127.0.0.1:8081/api/api_book/search/author?author=鲁迅
查看该实体类暴露出来了哪些查询方法:
GET http://127.0.0.1:8081/api/api_book/search
文章来源: Spring Boot+Vue全栈开发实战 - 7.2 JPA实现REST
以上是脚本宝典为你收集整理的SpringBoot JPA实现REST全部内容,希望文章能够帮你解决SpringBoot JPA实现REST所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。