java - 带有java字符串数组的Mysql存储过程

标签 java mysql sql stored-procedures

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

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

如果任何手机号码与我的表格手机号码列值匹配,它会返回行值。

有什么可能性吗?

如果有的话请帮助我..

我有其他解决方案,它在 spring Jdbcmysql 中工作。

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 存储过程用于上面的代码.. 预先感谢..

最佳答案

选择查询是

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 和存储过程的情况下工作正常。

关于java - 带有java字符串数组的Mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411605/

相关文章:

java - JPA 查询语言 criteriaBuilder

java - session 感知 : How can I get session attribute from action

php - 运行迁移时的“No such file or directory”或“No such host is known”

php - 具有多个 where 子句的 select 查询是否在一个结果表中返回多个结果行?

mysql - 如何将一个表中的值添加到另一个表中的特定行?

java - 如何打包和链接 OpenCV 二进制文件和适用于 Android Studio 的 OpenCV Java SDK?

mysql - 在sql中,如何根据列中的约束来计算列中值的百分比?

java - 我正在获取 MySQL 服务器版本,以便在 '.null' 附近使用正确的语法

mysql - 如何在 MySQL 列中用 NULL 替换特定的日期时间值?

java - 带有比较器的Android排序 ListView 不起作用