1. # 모든 들어오는 데이터를 문자열로 처리하고 자동으로 들어오는 데이터에 이중 인용문을 추가하십시오. 예를 들면 : #user_id #의 주문, 전달 된 값이 111 인 경우 SQL로 구문 분석 할 때의 값은 "111"으로 주문됩니다. 통과 된 값이 ID 인 경우 SQL로 구문 분석 된 것은 "id"로 주문됩니다.
2. $ 전달 된 데이터를 직접 표시하고 SQL로 생성합니다. 예를 들면 다음과 같습니다. $ user_id $로 주문하십시오. 전달 된 값이 ID 인 경우 SQL로 구문 분석 된 것은 ID로 주문됩니다.
3. # 메소드는 SQL 주입을 크게 방지 할 수 있습니다.
4. $ 방법은 SQL 주입을 방지 할 수 없습니다.
5. $ 메소드는 일반적으로 테이블 이름을 전달하는 것과 같은 데이터베이스 개체를 전달하는 데 사용됩니다.
6. 일반적으로 #을 사용할 수있는 경우 $를 사용하지 마십시오.
mybatis를 정렬 할 때 Dynamic 매개 변수 별 순서를 사용하는 경우 # 대신 $를 사용하는 데주의를 기울여야합니다.
문자열 교체
기본적으로 #{} 형식 구문을 사용하면 MyBatis가 전처리 된 명령문 속성을 생성하고 배경 (예 :?)으로 안전한 값을 설정하게합니다. 이것은 안전하고 빠르며 때로는 SQL 문으로 직접 변경되지 않는 문자열을 삽입하려고합니다. 예를 들어, 순서와 마찬가지로 다음과 같이 사용할 수 있습니다. 주문 {collectname} wrent.
여기서 mybatis는 줄을 수정하거나 탈출하지 않습니다.
중요 : 사용자로부터 컨텐츠 출력을 수락하여 명령문에서 변경되지 않은 문자열에 제공하는 것은 안전하지 않습니다. 이로 인해 잠재적 인 SQL 주입 공격이 발생할 수 있으므로 사용자가 이러한 필드에 들어가거나 일반적으로 탈출하여 직접 확인할 수 없습니다.
위는 Mybatis의 #과 $의 차이에 대한 간단한 논의입니다. 모두가 wulin.com을 지원할 수 있기를 바랍니다