Mybatis 의 \ # {} 과 ${}

1789 단어 Mybatis#$
더 읽 기
어제 전화 면접 에서 이런 질문 을 받 았 습 니 다. 사실은 제 가 방금 사용 한 것 입 니 다. 잘 모 르 겠 습 니 다. 아 쉽게 도 인연 이 없 었 습 니 다.
1. \ # 들 어 오 는 데 이 터 를 문자열 로 생각 하고 자동 으로 들 어 오 는 데이터 에 더 블 따옴표 를 추가 합 니 다.
order by \ # userid \ #, 들 어 오 는 값 이 111 이면 sql 로 분 석 될 때의 값 은 order by "111" 이 고, 들 어 오 는 값 이 id 이면 sql 로 분 석 된 값 은 order by "id" 입 니 다.
2. $들 어 오 는 데 이 터 를 sql 에 직접 표시 합 니 다.
order by $userid $, 들 어 오 는 값 이 111 이면 sql 로 분 석 될 때의 값 은 order by 111 이 고, 들 어 오 는 값 이 id 라면 sql 을 order by id 로 분 석 됩 니 다.
3. \ # 방식 은 sql 주입 을 어느 정도 방지 할 수 있 습 니 다.
4. $방식 으로 Sql 주입 을 방지 할 수 없습니다.
5. $방식 은 일반적으로 데이터베이스 대상 에 전 송 됩 니 다. 예 를 들 어 표 이름 등 입 니 다.
6. 일반적으로 \ # 을 사용 할 수 있 는 것 은 $를 사용 하지 마 세 요. MyBatis 정렬 시 order by 동적 인 파 라 메 터 를 사용 할 때 \ # 가 아 닌 $를 사용 하 는 것 에 주의 하 세 요.
예 를 들 어 이것 은 모든 데 이 터 를 조회 하 는 방법 이다.
 
  @ResponseBody
	@RequestMapping("findByPage")
	public PageView findByPage( String pageNow,
			String pageSize,String column,String sort) throws Exception {
		UserFormMap userFormMap = getFormMap(UserFormMap.class);
		userFormMap=toFormMap(userFormMap, pageNow, pageSize,userFormMap.getStr("orderby"));
		userFormMap.put("column", column);
		userFormMap.put("sort", sort);
        pageView.setRecords(userMapper.findUserPage(userFormMap));
        return pageView;
	}

mapper. xml, 나 는 그래도 $를 썼 다.
 
	

좋은 웹페이지 즐겨찾기