当前位置: 首页 > 知识库问答 >
问题:

创建创建查询集参数

东郭翰音
2023-03-14

下面包含一个本机查询,我需要在其中设置一个参数,但是由于没有设置参数,所以该查询是错误的

SELECT movieId, title, genres FROM movies where title like '%%'"

所以返回所有行。怎么了

public List<T> findMovie(String keyword) {
        Query q = getEntityManager().createNativeQuery("SELECT movieId, title, genres FROM movies where title like '%?%'", entityClass);
        q.setParameter(1, keyword); //etc
        return q.getResultList();
    }

共有3个答案

伍捷
2023-03-14
public List<T> findMovie(String keyword) {
    Query q = getEntityManager().createQuery("SELECT movieId, title, genres FROM movies where title like CONCAT('%',?,'%')", entityClass);
    q.setParameter(1, keyword); 
    return q.getResultList();
}
钮实
2023-03-14

假设您的查询是“从title like=thor的电影中选择movieId、title和流派”。

在这里,您的查询将返回一个列表,其中包含 movieId、标题、流派参数。在本机查询中,它将返回 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;
    }
}

这里< code>MovieObject构造函数将映射电影对象[]的位置数据。

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并调用<code>getMovieByTitle(EntityManager EntityManager,字符串标题)

导入这个

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

现在,您必须调用将执行查询并返回值的函数。您的执行代码如下所示:

@PersistenceContext
private EntityManager entityManager;

List<MovieObject> movieObjects=getMovieByTitle(entityManager,"thor");

现在,您处理的数据位于List moviObject中。

如果您想了解更多详细信息,请访问此线程

谢谢:)

魏成济
2023-03-14
public List<T> findMovie(String keyword) {
    Query q = getEntityManager().createQuery("SELECT movieId, title, genres FROM movies where title like :keyword", entityClass);
    q.setParameter("keyword", keyword); //etc
    return q.getResultList();
}

如果要使用位置参数,请使用以下语法:

public List<T> findMovie(String keyword) {
    Query q = getEntityManager().createQuery("SELECT movieId, title, genres FROM movies where title like ?1", entityClass);
    q.setParameter(1, keyword); //etc
    return q.getResultList();
}
 类似资料:
  • 以下示例将演示如何在DBUtils的帮助下,使用语句来创建记录。 我们将在表中插入一条记录。 语法 其中, insertQuery − Insert query having placeholders. queryRunner − QueryRunner object to insert employee object in database. 为了理解上述与DBUtils相关的概念,我们编写一个

  • 主要内容:创建一个更新查询,创建一个删除查询,创建一个建表查询在本章中让我们来了解如何创建查询。 创建一个更新查询 可以使用更新查询更改表中的数据,并且可以使用更新查询来输入条件以指定应更新哪些行。 在执行更新之前,更新查询提供了一个查看更新数据的机会。 让我们再次转到“创建”选项卡,然后单击“查询设计”。 在“表”选项卡的“显示表”对话框中,双击表,然后关闭对话框。 在“设计”选项卡的“查询类型”组中,单击“更新”并双击要更新值的字段。假设要将员工编号为:

  • 通常情况下,Elasticsearch模块创建查询的机制与4.2节查询方法中描述的一样。通过下面的例子,我们来看看Elasticsearch模块会根据一个查询方法生成怎样的查询语句。 Example 37. Query creation from method names(通过方法名创建查询) public interface BookRepository extends Repository<B

  • Spring Data repository自带了一个非常有用的查询构造器。它会从方法名中去掉类似find..By,read...By,query...By,count...By之类的前缀,然后解析剩余的名字。我们也可以在方法名中加入更多的表达式,比如查询时需要distinct约束,那么在方法名中加入Distinct即可。方法名中的第一个By是一个分解符,代表着查询语句的开始,我们可以用And或O

  • 以下示例将演示如何在DBUtils的帮助下使用Insert查询创建记录。 我们将在Employees Table中插入一条记录。 语法 (Syntax) String insertQuery ="INSERT INTO employees(id,age,first,last) VALUES (?,?,?,?)"; int insertedRecords = queryRunner.update(

  • 问题内容: 有什么方法可以创建 查询参数 以在JavaScript中执行 GET请求 吗? 就像在Python中一样,它具有一个字典(或两个元组的列表)并创建一个类似的字符串。 问题答案: 干得好: 用法: