mybatis의 #과 $의 차이점
1. #들어오는 데이터를 문자열로 처리하고, 자동으로 들어오는 데이터에 큰따옴표를 추가합니다. 예를 들어 order by #user_id#, 전달된 값이 111이면 sql로 구문 분석할 때 값은 전달된 값이 id인 경우 order by "id"입니다. 🎜>
2.$는 들어오는 데이터를 직접 표시하고 SQL에서 생성합니다. 예: $user_id$별로 정렬, 전달된 값이 111이면 SQL로 구문 분석할 때 값은 user_id별로 정렬됩니다. 전달된 값이 id이면 구문 분석된 SQL은 id별로 정렬됩니다.
3.#Method를 사용하면 SQL 주입을 크게 방지할 수 있습니다.
4. $ 메소드는 SQL 주입을 방지할 수 없습니다.
5. $ 메서드는 일반적으로 테이블 이름과 같은 데이터베이스 개체를 전달하는 데 사용됩니다.
6 일반적으로 $를 사용하지 마세요.
<sql id="condition_where"> <isNotEmpty property="companyName" prepend=" and "> t1.company_name like #companyName# </isNotEmpty> </sql>
if (!StringUtil.isEmpty(this.companyName)) { table.setCompanyName("%" + this.companyName + "%"); }