SpringでIN句指定した条件で検索できない
Q&A
Closed
解決したいこと
SpringでIN句指定した条件で検索できない
発生している問題・エラー
SpringでIN句で条件を指定しましたが、結果がNULLとなっていますのでそのバグを解消したいです。
該当するソースコード
@PostMapping("/searchAll")
public String searchEach(@ModelAttribute SyainSV SyainSVData
, Kihon1 kihon1, Syain syain, Model model) {
String syain_id1 = SyainSVData.getSyain_id1();
String syain_id2 = SyainSVData.getSyain_id2();
String syain_id3 = SyainSVData.getSyain_id3();
String syain_id4 = SyainSVData.getSyain_id4();
String syain_id5 = SyainSVData.getSyain_id5();
List<String> array = new ArrayList(Arrays.asList(syain_id1, syain_id2, syain_id3, syain_id4, syain_id5));
array.removeAll(Arrays.asList("", null));
String where_str = "'";
for (int i = 0; i < array.size();i++) {
if (!StringUtils.isEmpty(array.get(i))) {
where_str = where_str + array.get(i);
where_str = where_str + "'";
}
if(i == array.size() - 1) {
break;
}
where_str = where_str + ", '";
}
StringBuilder sql_buil = new StringBuilder();
sql_buil.append("SELECT syain.syain_id, kihon1.kihon_name, kihon1.mei_st"
+ ", kihon1.mei_ed, kihon1.kinmu_st, kihon1.kinmu_ed ");
sql_buil.append("FROM syain ");
sql_buil.append(" INNER JOIN kihon1 ");
sql_buil.append(" ON kihon1.kihon_id = syain.syain_id ");
if (!StringUtils.isEmpty(where_str)) {
sql_buil.append("WHERE syain.syain_id IN (?)");
}
String sql = sql_buil.toString();
Object[] args = new Object[] {where_str};
BeanPropertyRowMapper<KintaiList> rowMapper = BeanPropertyRowMapper.newInstance(KintaiList.class);
List<KintaiList> kintaiList = jdbc.query(sql, rowMapper, args);
model.addAttribute("list", kintaiList);
return "index";
}
例)
package jp.winschool.spring.sample09;
import lombok.Data;
@Data
public class KintaiList {
private String syain_id;
private String kihon_name;
private String mei_st;
private String mei_ed;
private String kinmu_st;
private String kinmu_ed;
}
自分で試したこと
IN句に設定した条件がwhere_str=1,2でもwhere_str='1','2'でも検索できませんでした。
下記の検索する箇所までは問題なく処理できていて、下記のコードを処理すると空欄になるので、
別の検索する方法があれば教えていただきたいです。
List kintaiList = jdbc.query(sql, rowMapper, args);