公司做网站好不好,义乌网站网站建设,深圳学校网站建设,公益网站建设方案除了常见的方式实现 RESTful API#xff0c;还有一种简单的方式实现 RESTful API#xff0c;那就是用 JPA 方式。首先介绍一下 JPA#xff0c;它是 Sun 公司推荐的 JAVA 持久化规范#xff0c;为了简化 ORM 技术而产生。需要注意的是#xff0c;他只是一套规范#xff0c… 除了常见的方式实现 RESTful API还有一种简单的方式实现 RESTful API那就是用 JPA 方式。首先介绍一下 JPA它是 Sun 公司推荐的 JAVA 持久化规范为了简化 ORM 技术而产生。需要注意的是他只是一套规范不是一套具体的框架只要符合这个规范的框架都可以被称为 JPA 框架。其中 Spring Boot 也有封装好的 spring-boot-start-data-jpa。 新建项目jpatest对于 JPA 的安装也是在 pom.xml 中添加依赖同时也加入数据库相关依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdjpatest/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.8.RELEASE/versionrelativePath//parentpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependency!-- json--groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-json/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-rest-webmvc/artifactId/dependencydependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-jpa/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.23/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.28/version/dependency/dependencies/project
然后配置数据库配置和 druid 连接池配置编写 application.yml 代码如下
spring:datasource:url: jdbc:mysql://localhost:3306/spring_boot?useTimezonetrueserverTimezoneUTCtype: com.alibaba.druid.pool.DruidDataSourceusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverjpa:database: mysqlshow-sql: true #打印sql语句只在测试阶段hibernate:ddl-auto: none #是否自动创建表
创建实体类创建Dao层文件夹编写 Book.java作为实体类代码如下
package org.example.dao;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
//实体类对应的数据库表名
Entity(name my_comic_books)
public class Book {//主键字段实体类唯一标识Id//指定如何为数据库表中的主键字段生成唯一的值自增GeneratedValue(strategy GenerationType.IDENTITY)private Integer id;private String name;private String author;private float price;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public float getPrice() {return price;}public void setPrice(float price) {this.price price;}
}
创建一个接口 ComicBookRepository代码如下
import org.example.dao.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.stereotype.Repository;
//替换掉默认路由名称
RepositoryRestResource(path mybook)
public interface ComicBookResitory extends JpaRepositoryBook,Integer {
}
该接口默认继承 JpaRepository 中的方法常用方法如下
public interface JpaRepositoryT, ID extends PagingAndSortingRepositoryT, ID, QueryByExampleExecutorT {ListT findAll();ListT findAll(Sort var1);ListT findAllById(IterableID var1);S extends T ListS saveAll(IterableS var1);void flush();S extends T S saveAndFlush(S var1);void deleteInBatch(IterableT var1);void deleteAllInBatch();T getOne(ID var1);S extends T ListS findAll(ExampleS var1);S extends T ListS findAll(ExampleS var1, Sort var2);
}
直接访问不需要编写 Controller 层。
chu
除此之外还可以增加其他配置例如分页数排序方式是否增加请求前缀等配置如下
data:rest:#设置每页记录数default-page-size: 2#分页页码参数名page-param-name: page#分页查询记录参数名limit-param-name: size#分页查询排序参数sort-param-name: sort#请求路径前缀base-path:
除了写在文件中还可以写在代码当中只需编写一个类实现 RepositoryRestConfigurer 接口
package org.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
Configuration
public class MyRestConfig implements RepositoryRestConfigurer {Overridepublic void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {config.setPageParamName(page).setLimitParamName(size).setSortParamName(sort).setDefaultPageSize(2).setBasePath().setReturnBodyOnCreate(true);}
}代码的优先级高于文件如果有这个文件那么以这个文件的设置为准。