假设您的查询是“
SELECT movieId、title、genres FROM movies WHERE title like = thor”。
在这里,您的查询将返回一个带有
movieId、title、genres参数的列表。在本机查询中,它将返回一个Object[]列表。在Object[]中,具有特定位置的所需数据。
您可以按照以下步骤进行操作:
您的预期响应类如下::
public class MovieObject{
int movieId;
String title;
String genres;
public MovieObject(Object[] columns) {
this.movieId = (columns[0] != null)?((BigDecimal)columns[0]).intValue():0;
this.title = (String) columns[1];
this.genres = (String) columns[2];
}
public int getMovieId() {
return movieId;
}
public void setMovieId(int movieId) {
this.movieId = movieId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getGenres() {
return genres;
}
public void setGenres(String genres) {
this.genres = genres;
}
}
在这里,MovieObject
构造函数将映射 Movie Object[] 的位置数据。
public MovieObject(Object[] columns) {
this.movieId = (columns[0] != null)?((BigDecimal)columns[0]).intValue():0;
this.title = (String) columns[1];
this.genres = (String) columns[2];
}
您的查询执行函数应如下所示:
public List<MovieObject> getMovieByTitle(EntityManager entityManager,String title) {
String queryStr = "SELECT movieId, title, genres FROM movies where title like = ?1";
try {
Query query = entityManager.createNativeQuery(queryStr);
query.setParameter(1, title);
List<Object[]> objectList = query.getResultList();
List<MovieObject> result = new ArrayList<>();
for (Object[] row : objectList) {
result.add(new MovieObject(row));
}
return result;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
这里的导入是:
import javax.persistence.Query
import javax.persistence.EntityManager
现在你的主类,需要调用此函数。首先获取EntityManager,然后调用此getMovieByTitle(EntityManager entityManager,String title)
函数。调用过程如下:
导入这个
import javax.persistence.EntityManager
import javax.persistence.PersistenceContext
现在,您需要调用执行查询并返回值的函数。 您的执行代码如下:
@PersistenceContext
private EntityManager entityManager
List<MovieObject> movieObjects=getMovieByTitle(entityManager,"thor")
现在,您处理过的数据在电影对象列表 movieObjects中。
如果您想了解更多详情,请访问本帖
谢谢 :)