my batis 의@param 을 왜 사용 하 는 지 말씀 드 리 겠 습 니 다.

2453 단어 mybatis@param
원인
우리 먼저 잘못 을 보고 하 자.

오 류 는 간단 합 니 다.인자 start 를 찾 지 못 했 습 니 다.
저 는 API 인 터 페 이 스 를 실현 할 때 문 제 를 발 견 했 습 니 다.@Param 탭 을 사용 하지 않 을 때 my batis 는 어떤 매개 변수 이름 이 무엇 인지 모 릅 니 다.비록 제 가 정 의 했 지만(long start,long end)그것 은 아직 모 릅 니 다.이 인터페이스 에서 저 는 전단 에서 들 려 오 는 매개 변수 에 따라 지정 한 범위 의 데 이 터 를 찾 고 싶 습 니 다.예 를 들 어 두 번 째 페이지 의 데 이 터 를 검색 하고 싶 습 니 다.한 페이지 에 20 개가 있다 고 가정 하면 검색 범 위 는 21-40 입 니 다.그래서 인터페이스 에 있 는 getTypeListByRange 를 호출 하여 mapper 에 대응 하 는 SQL 문 구 를 찾 습 니 다.

public interface TypeDao {
 Type getTypeByid(long id);
 List<Type> getTypeListAll();
 List<Type> getTypeListByRange(long start,long end);
}

해석@Param
org.apache.ibatis.annotations.Param 맵 기 방법 에 여러 개의 인자 가 필요 할 때 이 주 해 는 맵 기 방법 중의 모든 매개 변수 에 이름 을 짓 는 데 사용 할 수 있 습 니 다.그렇지 않 으 면 다 중 매개 변 수 는 순서 위치 와 SQL 문장의 표현 식 으로 매 핑 됩 니 다.이것 은 기본 값 입 니 다.
문법 요구:@Param("id")을 사용 하면 SQL 의 매개 변 수 는\#{id}로 명명 되 어야 합 니 다.
쓰다
Dao 층

import org.apache.ibatis.annotations.Param;

import com.caeser.upmovie.entity.Type;

public interface TypeDao {
 Type getTypeByid(long id);
 List<Type> getTypeListAll();
 List<Type> getTypeListByRange(@Param("start")long start,@Param("end")long end);
}

Mapper

<select id="getTypeListByRange"  resultType="com.caeser.upmovie.entity.Type">
 SELECT
 ID,
 NAME,
 CREATE_TIME,
 UPDATE_TIME
 FROM
 upm_type
 LIMIT 
  #{start},#{end};
 </select>

유닛 테스트

public class TypeTest extends BaseTest{
 @Autowired
 private TypeDao typeDao;
 
 @Test
 public void testDao(){
 List<Type> typeList1=typeDao.getTypeListByRange(1, 4);
 for(int i=0;i<typeList1.size();i++){
  System.out.println(typeList1.get(i).getName());
 }
 }
}

결실

총결산
Dao 층 이 매개 변 수 를 여러 매개 변수 로 전달 할 때 규범 을 위해@Param 을 사용 하여 매개 변수 이름 을 지어 야 합 니 다.여기 서 주의해 야 할 것 은 my batis 의 param 을 사용 하여 이름 을 짓 는 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기