使用java String Array的Mysql存储过程

时间:2015-02-09 14:05:46

标签: java mysql sql stored-procedures

我需要一个存储过程来比较数据库表中的手机号码列表。 示例我的表包含100行,我将java字符串数组传递给存储过程以获取匹配的行值。

该数组包含多个手机号码。

如果我的表移动电话号码列中的任何移动电话号码匹配,则返回行值。

有任何可能吗?

如果有空的话请帮帮我..

我有其他解决方案,它在Jdbc春天与mysql一起工作。

private static final String GET_MATCHING_MOBILE_NUMBERS = "SELECT USER_ID, USER_NAME, REGISTRATION_ID, IMEI_CODE, MOBILE_NUMBER FROM USER WHERE MOBILE_NUMBER IN (";

@Override
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public List<UserDO> getMatchingExistingUsers(final String[] mobileNumbers) throws UserDataException {
    JdbcTemplate jd = this.getJdbctemplate();
    Object[] params = mobileNumbers;
    List<UserDO> userDOs = jd.query(getSqlQuery(GET_MATCHING_MOBILE_NUMBERS, mobileNumbers), params, new BeanPropertyRowMapper<UserDO>(UserDO.class));
    return userDOs;
}

private String getSqlQuery(String query_string, String[] array_values) {
    StringBuilder query_builder = new StringBuilder();
    query_builder.append(query_string);
    for (@SuppressWarnings("unused")
    String values : array_values) {
        query_builder.append("?,");
    }
    query_builder.append("*");
    String formated_query = query_builder.toString().replace(",*", ")");
    return formated_query;
}

如果可能,我希望Mysql存储过程以上代码。 提前谢谢..

1 个答案:

答案 0 :(得分:0)

选择查询

private static final String GET_MATCHING_MOBILE_NUMBERS = "SELECT USER_ID, USER_NAME, REGISTRATION_ID, IMEI_CODE, MOBILE_NUMBER FROM USER WHERE FIND_IN_SET(MOBILE_NUMBER,?);";

Jdbc代码是

List<UserDO> userDOs = jd.query(GET_MATCHING_MOBILE_NUMBERS, new Object[] { formatedSqlText }, new BeanPropertyRowMapper<UserDO>(UserDO.class));

没有使用String Builder和Stored过程,它工作正常。