2016-07-10 4 views
0

이제 스프링 + mybatis를 사용하여 프로젝트를 개발하므로 일부 데모 코드로 빈 프로젝트를 생성 할 수있는 maven 아키타 입을 만들고 싶습니다. 초보자에게 spring + mybaits 사용법 및 단위 테스트 작성법을 알려주는 테스트 코드. 하지만 지금은 후maven archetype generate를 실행할 때 mybatis mapper.xml에서 이스케이프 처리하는 방법

를 추가 archetype-resources/pom.xml 머리 , 그것은
insert into demo_user (mobile,nick) values (#mobile,#nick) 

다음 내가 {를 탈출하는 방법으로 아래 시도했지만 실패하게 mvn archetype:generate ...을 실행, 어떤 문제가 archetype-resourcesarchetype-resources/src/main/resources/sql/myapp/DemoUser.xml

<insert id="insertUser" useGeneratedKeys="true" 
     keyProperty="id"> 
    insert into demo_user (mobile,nick) values (#{mobile},#{nick}) 
</insert> 

을 충족

#set(${startbrace} = "{") 

다음으로 수정하십시오. DemoUser.xml

insert into demo_user (mobile,nick) values (#${startbrace}mobile},#${startbrace}nick}) 

하지만 실제로는 코드

insert into demo_user (mobile,nick) values (#${startbrace}#obile},#${startbrace}#ick}) 

아래에 생성 그래서 나는이 상황에 대해 매우 혼란 스러워요. {을 올바르게 탈출하는 방법을 알고 싶습니까?

답변

0

사용중인 벨로 시티의 버전에 따라 다를 수 있습니다.

Velocity 1.7 이상에서는 원래 문제가 발생하지 않으며 ((#{mobile},#{nick})은 올바르게 렌더링 됨) 해결 방법도 제대로 작동합니다.

이전 Velocity 버전으로 문제를 재현하려고 시도하지 않았지만 할당에서 큰 따옴표를 사용하고 있다는 사실 때문에 문제가 발생했다고 생각합니다.

#set(${startbrace} = '{') 

단일 인용 콘텐츠를 구문 분석 하지, 그래서 확실히 심지어 오래된 속도 버전으로 작동합니다 : 그래서 당신은 시도해야합니다.

+0

감사합니다! 나는 싱글 쿼트 (single-quoted)로 변경하려고했지만 작동하지 않는다. 그리고'mvn archetype : generate ...'를 실행할 때 속도 버전을 지정하는 방법? – zhuguowei

+0

안녕하세요. 해결했습니다. 내 대답은 아래를 참조하십시오. – zhuguowei