一、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</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
spring.datasource.url=jdbc:mysql:///jparestful
spring.datasource.username = root
spring.datasource.password = kangxg198811
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=mysql
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
三 创建实体类
@Entity(name="t_book")//注解为一个实体类,在项目启动时根据该类自动生成一张表,表名t_book如果不设置,表名默认为类名
public class Book {
@Id//注解表示该 属性是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY )//自动生成,strategy生成策略
private Integer id;
@Column(name="book_name",nullable=false)
private String name;
private String author;
@Transient
private String description;
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setAuthor(String author) {
this.author = author;
}
}
@Column 定义字段属性
@Transient 生成的数据库中的表时,该属性被忽略
三、创建Repository类
public interface BookDao extends JpaRepository<Book,Integer> { }
增删改查、分页查询都由JpaRepository提供了
四、测试
1.原库中
2.使用postman添加测试
格式设置 错误
2.使用postman查询测试
五、自定义请求路径与自定义查询
@RepositoryRestResource(path = "bs",collectionResourceRel = "bs",itemResourceRel = "b") public interface BookDao extends JpaRepository<Book,Integer> { @RestResource(path = "author",rel = "author") //http://localhost:9090/bs/search/findByAuthorContains?author="author" List<Book>findByAuthorContains(@Param("author") String authoer); @RestResource(path = "name",rel = "name") Book findByNameEquals(@Param("name") String name); }
六、隐藏方法
@CrossOrigin//CORS配置 @RepositoryRestResource(exported = false)//隐藏类(因为继承类JpaRepository 默认 true) public interface BookDao extends JpaRepository<Book,Integer> { @RestResource(path = "author",rel = "author") List<Book>findByAuthorContains(@Param("author") String authoer); @RestResource(path = "name",rel = "name") Book findByNameEquals(@Param("name") String name); @RestResource(exported = false)//隐藏方法 默认 true void deleteAllById(Integer id); }