簡體   English   中英

使用Java字符串數組的Mysql存儲過程

[英]Mysql Stored procedure with java String Array

我需要一個存儲過程來比較數據庫表中的手機號碼列表。 例如,我的表包含100行,我將java String數組傳遞給存儲過程以獲取匹配的行值。

該數組包含多個手機號碼。

如果在我的表手機號碼列值中匹配任何手機號碼,它將返回行值。

有沒有可能?

如果可以的話請幫助我。

我還有其他解決方案,它可以在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和Stored Procedure即可正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM