我在这里看到 2 个任务。一般来说,您首先准备 2 个 API 端点以将数据传递到您的前端(请记住,JHI 同时提供服务器和客户端),然后使用 plotly (js) 来进行绘图
准备 API
您应该将 SQL 查询转换为 JPA,如下所示:
public interface BookRepository extends JpaRepository<Book,Long> {
@Query("select b.authorId, count(b.id) from Book b group by b.authorId ")
List<Book> findAllGroupByAuthor();
@Query("select b.authorId, YEAR(b.publicationDate) as year,count(*) from Book b group by b.authorId, b.year")
List<Book> findAllGroupByAuthorAndYear();
}
然后你将它添加到一些 RestControllers。这是一个例子
@RestController
@RequestMapping("/api/books/query/")
public class CustomBookQueryResource {
private BookRepository bookRepository;
public CustomBookQueryResource(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
@GetMapping("/group_by_author")
public ResponseEntity<List<Book>> groupByAuthor() {
return ResponseEntity.ok(bookRepository.findAllGroupByAuthor());
}
@GetMapping("/group_by_author_and_year")
public ResponseEntity<List<Book>> groupByAuthorAndYear() {
return ResponseEntity.ok(bookRepository.findAllGroupByAuthorAndYear());
}
}
所以在此之前,您应该已经有一些 api 端点,为您的数据提供服务。现在您应该在 Angular 中添加您的自定义查询书服务
angular
.module('<yourApp>')
.factory('CustomBookQuery', CustomBookQuery);
CustomBookQuery.$inject = ['$http'];
function CustomBookQuery ($http) {
var resourceUrl = 'api/books/query/';
return {
findAllGroupByAuthor: function () {
return $http.get(resourceUrl + 'group_by_author');
},
findAllGroupByAuthorAndYear: function () {
return $http.get(resourceUrl + 'group_by_author_and_year');
}
};
}
现在您只需注入您的服务并将其承诺解析传递给您的情节,这已经有和 JS 部分和 Angular implementation
(我在脑海中编写了上面的代码,所以没有经过测试)