0
안녕하세요, 다음 코드를 가지고 있습니다. 내가 결과를 실행하면 기본적으로 내가 이렇게 내 코드에서 스프링 jdbc 템플릿 쿼리가 여러 개의 인자를 가진 빈 결과를 반환합니다.
public static final MY_QUERY = "Select distinct A.col1, A.col2 from tableA, tableB where A.col1 = ? and A.col2 = ? and b.id = A.id";
은 ...
public List<MyClass> getData(final String input1, final String input2) {
return this.jdbcTemplate.query(MyQuery,
new Object[] { input1, input2},
new int[] {Types.VARCHAR, Types.CHAR}, new MyMapper());
}
.. 그것은 빈 목록을 반환합니다.
지금 내가 이렇게하면.
public static final MY_QUERY_2 = new StringBuilder(96)
.append("Select distinct A.col1, B.col2 from tableA, tableB where A.col1 =").append(input1)
.append(" and A.col2 = ").append(input2).append(" and b.id = A.id").toString();
내 DAO 클래스
public List<MyClass> getData() {
return this.jdbcTemplate.query(MY_QUERY_2, new MyMapper());
}
내부
나는 세 가지 결과를 얻을 수 있습니다.첫 번째 구현이 잘못되었습니다.
참고 : 하나 이상의 인수를 사용하는 경우 작동하지만 2를 사용하는 경우보다 않습니다.
데이터베이스의 col1과 col2의 데이터 유형은 무엇입니까? VARCHAR 및 CHAR? 또한 SQL 주입 공격에 취약하기 때문에 두 번째 방법보다 첫 번째 방법을 선호하십시오. – toddlermenot
예 그들은 VARCHAR 및 CHAR입니다. 나는 그것이 어떻게 든 비어있는 결과를주는 것처럼 일하는 첫 번째 방법을 얻을 수 없다. –
데이터베이스에서이 쿼리를 실행하고 결과를 게시 할 수 있습니까? 'select * from v $ sql where 'sql_text like'% Select distinct A.col1 % '' – toddlermenot