2015-02-09 45 views
1

我需要一個存儲過程來比較我的數據庫表中的手機號碼列表。 示例我的表中包含100行,我通過java字符串數組來存儲過程以獲取匹配的行值返回。Mysql用java字符串Array存儲過程

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

如果手機號碼匹配我的手機號碼列值,它返回行值。

有沒有可能的可能性?

如果可以請幫我..

我有它的工作在春季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存儲過程..

回答

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)); 

它的工作沒有使用字符串生成器和存儲過程的罰款。