권장 독서 :
Mybatis 소개 학습 튜토리얼 (I) - Mybatis 빠른 시작
동적 SQL이란 무엇입니까? 동적 SQL 기능이란 무엇입니까?
JDBC를 사용하는 전통적인 방법에서는 복잡한 SQL 문을 결합하면 스플릿해야한다고 생각합니다. 조심하지 않으면 공간이 부족하더라도 오류가 발생합니다. Mybatis의 동적 SQL 기능은이 문제를 해결하는 것입니다. IF, 선택, TRIM, TRIM, SET, Foreach 태그를 설정하여 개발자의 효율성을 향상시킬 때 매우 유연한 SQL 문으로 결합 할 수 있습니다.
Mybatis Dynamic SQL의 매력을 경험해 봅시다 :
1. 만약 : 당신은 판단 할 수 있고 나도 판단 할 수 있습니다!
이해하지 못하는 프로그래머로서! mybatis에서 if를 사용할 수도 있습니다.
<select id = "findUserById"resulttype = "user"> user where <if test = "id! = null"> id =#{id} </if> 및 deleteflag = 0; </select> 선택 * 선택 *위의 예 : 들어오는 ID가 비어 있지 않으면 SQL은 id = #{id}를 스플 라이스합니다. 나는 모든 사람들이 그것을 읽음으로써 이것을 이해할 수 있다고 믿고, 나는 많이 말하지 않을 것입니다.
신중한 사람들은 문제를 발견 할 것입니다. "이것은 당신에게 잘못입니다! 당신이 통과하는 신분증이 null이라면, 최종 SQL 문이 선택이됩니다.
예, 현재 Mybatis의 Where 태그를 웅장하게 만들어야합니다.
2. 나와 함께 SQL 문자리 스 플라이 싱 조건은 모두 구름에 관한 것입니다!
위의 예를 통해 위의 예를 수정하겠습니다.
<id id = "findUserById"resultType = "user"> user where <were> <if test = "id! = null"> id =#{id} </if> 및 deleteflag = 0; </where> </select>에서 선택 * 선택 * 선택 *어떤 사람들은 다음과 같이 묻습니다. "무엇을하고 있습니까? 위의 것과 비교할 때, 태그가있는 곳이 더 있습니다! 이것은 여전히 select *에서 expend * where and deleteflag = 0입니까?"
실제로, 표면에는 태그가 추가로 표시되지만 본질적으로 Mybatis는이를 다룹니다. 그것이 만나거나 또는 그것을 다루는 방법을 알고 있습니다. 실제로 트림 태그를 통해이 처리 규칙을 사용자 정의 할 수 있습니다.
3. Trim : 내 영토, 나는 결정을 내린다!
TAG를 사용하여 다음과 같이 표현할 수있는 위의 위치 :
<trim prefix = "여기서"prefixoverrides = "및 | 또는"> ... </trim>
그것은 의미 : 어디에 따라 나거나 또는 또는 또는 제거 될 때. 어디에도 실제로 다른 고전적인 구현이 있습니다.
4. 세트 : 나를 믿으십시오, 실수는 없습니다!
<update id = "updateUser"ParameterType = "com.dy.entity.user"> USDUTE USDOR SET <if test = "name! = null"> name = #{null "> if test ="password! = null "> password = {password}, </if> <"agy => age = {age = #<if test =/if> if> if> if> if> if> if> if> if> if> if> <if test = </if>. null "> id = #{id} </if> 및 deleteflag = 0; </where> </update>"이름 만 있지만 NULL이 아닌 경우이 SQL은 업데이트 세트 이름 = #{name}가됩니다.
예, 현재 Mybatis가 제공 한 세트 태그를 사용할 수 있습니다. 다음은 세트 태그를 통해 수정됩니다.
<Update id = "updateUser"parameterType = "com.dy.entity.user"> USDUTE 사용자 세트 <set> <if test = "name! = null"> name = #{name}, </if> <if test = "password! = null"> password = #{password}, </if> </if> </if> </if> </if> </if> </if>. test = "id! = null"> id = #{id} </if> 및 deleteflag = 0; </where> </update>이것은 다음과 같이 표현할 수 있습니다.
<trim prefix = "set"sepixoverrides = ","> ... </trim>
Prefixoverrides (접두사)를 사용하는 경우 SET SET SOCIES TUPSIXOVERRIDES (접미사)를 사용하면 이해할 수 있습니다!
5. Foreach : 당신은, 나는 foreach를 가지고 있습니다. 그것이 당신 만이라고 생각하지 않습니다!
Java에 대한 것이 있으며,이를 통해 반복 될 수 있습니다. 마찬가지로 Mybatis에는 Foreach가 있으며 루프를 구현하는 데 사용할 수 있습니다. 물론, 루프 된 물체는 주로 Java 컨테이너 및 어레이입니다.
<SELECT ID = "SELECTPOSTIN"resultType = "domain.blog.post"> select *<foreach id in in index = "index"collection = "list"open = "("seplecator = ","close = ")"> {item} </foreach> </select>MyBatis에 매개 변수 객체로 목록 인스턴스 또는 배열을 전달하십시오. 그렇게 할 때 MyBatis는 자동으로지도로 래핑하고 이름을 키로 사용합니다. 목록 인스턴스는 "목록"을 키로 사용하고 배열 인스턴스의 키는 "배열"입니다. 마찬가지로 루프 객체가 맵 인 경우 색인은 실제로 맵 키입니다.
6. 선택 : 나는 당신을 선택했습니다, 당신은 나를 선택했습니다!
Java에는 스위치가 있으며 Mybatis는 선택권이 있습니다.
<select id = "findActiveBlog like"resultType = "blog"> blog where state = 'active'<select> <tevel! = null "> 및 #{title! = null"> #{title} </when> <test = "author! = null and author.name! = null"> 및 author_name} <{author_name} <{author_name </way <{author_name! 1 </그렇지 않으면> </선택> </select>위의 예에서 : 제목이나 저자가 null이면 두 가지 중 하나를 선택하십시오 (전자는 선호). 둘 다 NULL 인 경우 그렇지 않으면 선택하십시오. 틸트와 저자 중 하나만 있으면 널이 아닌 저자가 있다면 널이 아닌 것을 선택하십시오.
위의 것은 Mybatis Dynamic SQL의 Mybatis (iv)에 대한 소개 자습서입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!