如何使用是NamedParameterJdbcTemplate字符串列表才能得到结果(How to

2019-07-18 12:02发布

与Spring-JDBC实验。 我使用这个作为参考。 我试图让谁拥有相同的姓氏角色名单。 运行该代码给了我想要的结果:

public List<String> getActorsWithSameLastName(String lastName,
            NamedParameterJdbcTemplate template) {
        String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME=:LASTNAME";
        Map<String, String> paramMap = new HashMap<String, String>();
        paramMap.put("LASTNAME", lastName);
        return template.queryForList(query, paramMap, String.class);
    }

我有一个List<String>姓氏。 我怎样才能用,我有表演员的列表? 难道我遍历姓氏的列表,并调用getActorsWithSameLastName()每次或没有弹簧提供了一种方法,其中它的迭代并获取结果给我吗? 请指教。

Answer 1:

使用IN子句..

如何JDBCTemplates使用SELECT IN子句?

List<String> lastnames= new ArrayList<>();

Map namedParameters = Collections.singletonMap("lastnamevalues", lastnames);

StringBuffer recordQueryString = new StringBuffer();

recordQueryString.append("select FIRSTNAME, LASTNAME from ACTORS where lastname in (:lastnamevalues)");

List nameInvolvements = this.namedparameterJdbcTemplate.query(recordQueryString.toString(), namedParameters, new MyMapper());


Answer 2:

您还可以使用MapSqlParameterSource

String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME in (:LASTNAME)";
Set<String> ids = ....;

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("LASTNAME", ids);

this.namedparameterJdbcTemplate.query(query.toString(), parameters);


文章来源: How to use a list of string in NamedParameterJDBCTemplate to get results