my batis 입문 튜 토리 얼 (4) - 매개 변수의 입력 매개 변수

3. MyBatis 의 인자
        저 는 개인 적 으로 MyBatis 에서 얻 은 매개 변 수 는 입력 매개 변수 와 반환 매개 변수 로 나 뉘 는데 입력 매개 변 수 는 Mapper 인터페이스 에서 abstract 방법 에서 들 어 오 는 매개 변 수 를 정의 하 는 것 입 니 다. 반환 매개 변 수 는 바로 이 추상 적 인 방법의 반환 값 입 니 다.
여기 서 저 는 각각 들 어 오 는 매개 변수 와 되 돌아 오 는 매개 변 수 를 소개 합 니 다. 본 블 로 그 는 여러분 에 게 들 어 오 는 매개 변 수 를 소개 합 니 다. 다음 로 그 는 되 돌아 오 는 매개 변 수 를 전문 적 으로 소개 합 니 다.
3.1 입력 매개 변수
Mybatis 의 Mapper 파일 에 있 는 select, insert, update, delete 요소 에 parameterType 속성 이 있 습 니 다. 대응 하 는 mapper 인터페이스 방법 으로 받 아들 이 는 매개 변수 형식 입 니 다.
받 아들 일 수 있 는 매개 변수 유형 은 기본 유형 과 복잡 한 유형 이 있 습 니 다.
mapper 인터페이스 방법 은 일반적으로 하나의 인 자 를 받 아들 이 고 @ Param 주석 을 사용 하여 여러 개의 인 자 를 하나의 map 에 연결 하여 입력 매개 변수 로 할 수 있 습 니 다.
3.1.1 단순 유형
public Posts getPostsById(int id);
<!--    id   PostsMapper           ,            --> 
    <select id="getPostsById" resultType="Posts" parameterType="int"> 
        select * from posts where id=#{id} 
    </select>

간단 한 데이터 형식 에 대해 서 는 sql 맵 문 에서 직접 \ # {변수 이름} 을 참조 하면 됩 니 다. 사실 여기 있 는 '변수 이름' 은 임의로 사용 할 수 있 습 니 다.mapper 인터페이스 방법 이 전달 하 는 값 은 이름 이 무엇 인지 알 필요 가 없습니다.
또한 JAVA 반 사 는 방법 매개 변수 만 가 져 올 수 있 는 유형 으로 방법 매개 변수의 이름 을 알 수 없습니다.
예 를 들 어 위의 예제 에서 \ # {id} 을 사용 하여 인용 하 는 것 은 직관 적 일 뿐 다른 이름 으로 인용 하 는 것 도 마찬가지 입 니 다.따라서 if 요소 에서 test 가 전달 하 는 매개 변 수 는 반드시파 라 메 터 는 이 인 자 를 참조 합 니 다.이렇게:
    <select id="getPostsById" resultType="Posts" parameterType="int"> 
        select * from posts 
        <if test="_parameter!=0">
        		where id=#{id}
        </if>
        <if test="_parameter==0">
        		limit 0,1
        </if> 
    </select>

이상 사례 중의parameter 매개 변 수 는 인터페이스 에 해당 하 는 방법의 입 참 이름 을 가리킨다.
3.1.2 대상 유형
JAVA 의 복잡 한 대상 유형 에 들 어가 면 sql 매 핑 문 구 는 대상 의 속성 명 을 직접 참조 할 수 있 습 니 다. 이곳 의 속성 명 은 실제 적 인 실제 이름 입 니 다. 임의로 지정 한 것 이 아 닙 니 다.
Mapper 의 인터페이스 방법:
public void addPosts(Posts posts);

sql 맵:
    <insert id="addPosts" parameterType="Posts"> 
       insert into posts(title,context) values(#{title},#{context}) 
       <!--   sql       ,   “ORA-00911”    --> 
    </insert>

대상 의 속성 명 을 명확 하 게 인용 할 수 있 지만 if 요소 에서 들 어 오 는 posts 인 자 를 테스트 하려 면 을 사용 해 야 합 니 다.파 라 메 터 는 전 달 된 실제 파 라 메 터 를 참조 합 니 다. 전 달 된 Posts 대상 의 이름 은 시험 할 수 없 기 때 문 입 니 다.테스트 대상 의 속성 이 있 으 면 속성 이름 을 직접 참조 하면 됩 니 다.
3.1.3 지도 유형
맵 형식 을 입력 하고 \ # {keyname} 을 통 해 키 에 대응 하 는 값 을 참조 할 수 있 습 니 다.@ param 주석 을 사용 한 여러 매개 변수 값 도 하나의 map 데이터 구조 로 조립 되 어 맵 을 직접 전달 하 는 것 과 다 르 지 않 습 니 다.
Mapper 인터페이스:
int updateByExample(@Param("user") User user, @Param("example") UserExample example);

 
SQL 맵:
<update id="updateByExample" parameterType="map" >
  update tb_user
  set id = #{user.id,jdbcType=INTEGER},
  ...
  <if test="_parameter != null" >
    <include refid="Update_By_Example_Where_Clause" />
  </if>

전 달 된 맵 이 비어 있 는 지 확인 하고 사용parameter
3.1.4 집합 유형
You can pass a List instance or an Array to MyBatis as a parameter object. When you do, MyBatis will automatically wrap it in a Map, and key it by name. List instances will be keyed to the name “list” and array instances will be keyed to the name “array”.
하나의 List 나 Array 형식의 대상 을 매개 변수 로 전달 할 수 있 습 니 다. MyBatis 는 자동 으로 List 나 Array 대상 을 하나의 Map 대상 에 포장 합 니 다. List 유형 대상 은 list 를 키 이름 으로 사용 하고 Array 대상 은 array 를 키 이름 으로 사용 합 니 다.
집합 형식 은 보통 IN 조건 을 구성 하 는 데 사 용 됩 니 다. sql 맵 파일 에 foreach 요 소 를 사용 하여 List 나 Array 요 소 를 옮 겨 다 닙 니 다.
Mapper 인터페이스:
public void batchUpdate(List<Posts> list);

SQL 맵:
   <update id="batchUpdate" parameterType="java.util.List">
   		update posts set  badcount=3,goodcount=5 where id in
   		<foreach collection="list" item="item" open="(" close=")" index="index" separator=",">
   		     	 #{item.id}
   		</foreach>
   </update>

3.1.5 대상 유형 중의 집합 속성
단독으로 전 달 된 List 나 Array 에 대해 서 는 SQL 맵 파일 에 매 핑 될 때 list 나 array 를 통 해 만 참조 할 수 있 습 니 다.단, 대상 형식 에 속성 이 있 는 형식 이 List 나 Array 라면 sql 맵 파일 의 foreach 요소 에서 속성 이름 으로 직접 참조 할 수 있 습 니 다.
Mapper 인터페이스:
 
List<User> selectByExample(UserExample example);

SQL 맵:
<where >
  <foreach collection="oredCriteria" item="criteria" separator="or" >
    <if test="criteria.valid" >

좋은 웹페이지 즐겨찾기