아마도 많은 어린이 신발은 mybatis에서 다양한 스크립팅 언어를 사용하여 Mapper 파일에서 동적 SQL을 정의 할 수 있다는 것이 분명하지 않을 수 있습니다. 현재 MyBatis는 스크립팅 언어를 지원합니다. XML (기본값); 속도와 프리 마커. 다른 스크립팅 언어를 사용하여 Mapper 파일 작성을 완료하십시오. 첫 번째는 당신이 익숙한 스크립팅 언어를 사용하는 것이며, 두 번째는 맵퍼의 개발을 단순화하기 위해 점점 더 풍부한 사용자 정의 지침을 정의하는 것입니다. MyBatis 지원 스크립트의 원칙 분석과 관련하여 문자를 작성하여 사용자 정의 스크립팅 지침을 분석합니다. 이 기사는 먼저 Mybatis에서 Velocity Scripts의 사용을 소개합니다.
Mybatis-Velocity 프로젝트를 사용하면 Mapper 파일에서 다양한 동적 SQL의 쓰기를 완료하기 위해 속도를 스크립팅 언어로 편리하게 사용할 수 있습니다.
속도는 스크립트에서 광범위하게 사용됩니다. 익숙하지 않은 경우 먼저 속도 스크립트를 확인할 수 있습니다.
설치하다
Maven을 추가하십시오
<pectionency> <groupid> org.mybatis.scripting </groupid> <artifactid> mybatis-velocity </artifactid> <버전> 1.2 </version> </fectionency>
MyBatis 3.3 지원이 필요한 MyBatis-Velocity 버전 1.2를 사용하고 있습니다.
MyBatis 구성 파일에서 Velocity Script 엔진을 기본 맵퍼 파일 엔진으로 설정하십시오.
<faintealiases> ... <faintealias type = "org.mybatis.scripting.velocity.driver"alias = "velocity"/> </intealiases> <settings> ... <설정 이름 = "defaultscriptingLanguage"value = "Velocity"/> </settings>
구성이 완료되었습니다.
다음으로 Mapper 파일에서 속도 스크립트를 사용할 수 있습니다.
<id id = "findperson"lang = "velocity"> #set ($ pattern = $ _parameter.name + '%') @{pattern, jdbctype = varchar} </select>와 같은 사람에서 선택 * 선택 *알아채다:
속도를 사용하는 경우 #세트 #if 등과 같은 #로 시작하기 때문에 @{}를 사용하여 매개 변수를 참조해야합니다.;
속도 스크립트를 사용하여 매개 변수에서 해당 Javatype 및 JDBCType를 구성 할 수도 있습니다. 구성 형식은 @{property, attr1 = val1, attr2 = val2, ...}; 구성 가능한 항목은 javatype, jdbctype, mode, numericscale, resultmap, typehandler, jdbctypename입니다.
Velocity Directrives에서 맥락에서 변수를 사용하고 $ _parameter를 접두사 참조로 사용하십시오.
#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') 및 @{_ name} #end와 같은 이름Mybatis-Velocity 내장 명령
속도 지침 외에도 Mybatis-Velocity 프로젝트는 mybatis에 대한 내장 속도 지침을 정의합니다.
손질
#trim (접두사 접두사 접두사 접미사 접미사) 바디 #end
그것의 매개 변수의 의미는 XML에서 트림 매개 변수의 의미와 동일합니다.
An example:
#trim ( "여기서" "및 | 또는")#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') 및 @{_ name}#end#end와 같은 이름 어디
#where () body #end #where ()는 xml에서 <where>와 동일합니다. 조건을 교체 및/또는/또는/또는 위치로 교체 할 수 있습니다. /위치 ()는 괄호가 있습니다.
mset
#MSET () BODY #END #MSET는 #세트 자체의 #세트 지시문과 구별하기 위해 M에 M을 추가합니다. #mset은 xml의 <set> 요소와 동일합니다. 조건 앞에 세트 문을 추가하고 마지막 세트 블록에서 세미콜론을 제거 할 수 있습니다.
An example:
<업데이트 id = "update"> USDUDE #MSET () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) age =@{age}, #end #if ($ _ parameter.borndate) borndate =@{borndate} #end #{id} </update> 반복하다
#repeat (컬렉션 var exparator open close) 바디 #끝 #반복 지시문은 XML의 <foreach> 요소와 동일합니다. 수집/배열 유형 요소를 쉽게 통과하고 각 요소를 사용할 수 있습니다.
An example:
City #where () #repeat ($ _parameter.ids $ id "," "state_id in (" ")" @{id} #end #end를 선택하십시오. ~에
#in (Collection var Field) 바디 #end
#in 지시문은 SQL의 조건에 대한 () 명령문에서 해당 필드를 빠르게 생성 할 수있는 새로운 지침입니다. 매개 변수 목록에서 Collection은 IN의 내용을 통과 할 내용을 나타냅니다. var는 Traversal의 각 객체의 임시 참조 이름을 나타냅니다. 필드는 in 문 앞에 생성 된 필드 이름을 나타냅니다.
An example:
City #where () #in ($ _parameter.ids $ id "state_id") @{id} #end #end를 선택하십시오.맞춤 명령
Mybatis-Velocity를 사용하면 개발 단순화를위한 자신의 지침을 편리하게 사용자 정의 할 수 있습니다. 사용자 정의 지침의 단계는 다음과 같습니다.
classpath에 mybatis-velocity.properties 구성 파일을 추가합니다.
나만의 속도 지시서 구문 분석 클래스를 만듭니다.
구성 파일에 자신을 만든 Velocity Directive Parsing 클래스를 추가하십시오.
mapper.xml 파일에서 지시문을 사용하십시오.
An example:
// 사용자 정의 DirectivePackage com.myProject.Directives; // 사용자 정의 지시문 클래스는 지시문 클래스를 상속해야합니다. 공개 클래스 MyDirectection 확장 지시 사항 {} // mybatis-velocity.properties// 여러 개의 사용자 정의 지시문 클래스가 있으면 세미콜론으로 분리하십시오. userDirective = com.myproject.directives.mydirective; // City #MyDirective () ...... #end에서 Mapper XML FilesLect *포괄적 인 사용
Velocity-Mybatis를 사용하는 경우 일반적인 CRUD Mapper가 다음과 같이 보일 수 있습니다.
<mapper namepace = "mybatis.com._520it.mybatis.usermapper"> <resultmap type = "user"id = "user_mapping"> <id councle = "id"property = "id"/> <result column = "name"속성 = "name"/<result column = "age"propert = "age"/> <renate "propert" "borndate" "borndate" "borned" 속성 = "borndate"/> <resultmap> <insert id = "cheycolumn ="id "keyproperty ="id "usegeneratedkeys ="true "> user in user (name, age, borndate) 값 (@{javatype = string, jdbctype = varchar},@{and},@{borndate}) id = "update"> update user #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) age =@{age}, #end #if ($ _ parameter.borndate) born =@{borndate} #end #end id =@{id} <delete = "delete =" parametertype = "long"> id = @ql id = "user_column"> id, name, age, borndate </sql> <select id = "get"resultmap = "user_mapping"> refid = "user_column"/> inder ind = "id} < @select/select/select/select> <"user_mapping "> id, id ="user_column "> id. resultmap = "user_mapping"> select <select <select <repid = "user_column"/>에서 inhoy </select> </select> <select id = "listbyName"resultMap = "user_mapping"parametertype = "string"> select <repid = "user_column"/> user name = @{name} </select> <select id = "queryby" "select id ="select id = "select"> id, name, age, borndatefrom user#where ()#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') 및 @{_ name}#end#if ($ _ parameter.orderby) @{orderby} @{ordtype}#<<end#}#<<end#}# @{start}, @{pagesize} #end </select> </mapper>위는 편집자가 소개 한 Mybatis Velocity Script의 사용 자습서에 대한 자세한 설명입니다 (권장). 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!