my batis 입문 튜 토리 얼 (4) - 매개 변수의 입력 매개 변수
저 는 개인 적 으로 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" >
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Mybatis가 키 id를 삽입하는 방법을 되돌려줍니다.mapper의 xml 파일에useGeneratedKeys 구성 KeyProperty를 사용하여 Id로 돌아가면 됩니다. PS: Mybatis의 insert에서 키 ID를 반환하는 방법 1、XyzMapper.xml 또...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.