Mybatis 의@Param()주석 으로 인해 페이지 가 효력 을 잃 는 문 제 를 해결 합 니 다.

@Param 주석 으로 페이지 가 효력 을 잃 었 습 니 다.페이지 차단기
문제 설명
my batis 페이지 를 사용 할 때@Param 주 해 를 사용 하여 두 대상 에 전 달 했 습 니 다.페이지 가 효력 을 잃 고 항상 모든 데 이 터 를 조회 합 니 다.문제 가 발생 했 을 때 페이지 정책 은 다음 과 같 습 니 다. [오류 표기 법]
service 쓰기:

public Page<Entity> getByNidAndEntity(Page<Entity> page,String nid,Entity entity){
       entity.setPage(page);
       page.setList(dao.getByNidAndEntity(nid,entity));
       return page;
}
dao 방법 설명:

List<Entity> getByNidAndEntity(@Param("nid") String nid,@Param("entity")Entity entity);
mapper.xml 의 sql:

<select id="getByNidAndEntity" resultType="Entity">
      select <include refid="entityColumns" />
      from entity_table et left join other_table ot on et.id = ot.eid
      where ot.nid = #{nid} 
      and et.name = #{entity.name} and et.remarks = #{entity.remarks}
</select>
원인 분석
[결정적 인 원인]
  • 근원 적 인 문 제 는 Pagination Interceptor 에서 페이지 대상 페이지 가 null 로 해석 되 어 페이지 가 효력 을 잃 었 다 는 것 이다
  • .
  • @Param 은 매개 변 수 를 ParamMap 에 밀봉 하기 때문에 page 대상 은 실체 클래스 enity 에 있 기 때문에 convert Parameter 방법 으로 되 돌아 오 는 page 대상 은 null 입 니 다.
  • 在这里插入图片描述
    [mybatis 원본 코드:@Param 매개 변 수 를 ParamMap 에 봉인 합 니 다]
    원본 코드 추적 진입:org.apache.ibatis.bing.MapperMethod.class
    在这里插入图片描述
    execute Formany 에 들 어 가 는 방법:
    在这里插入图片描述
    convertArgsToSqlCommand Param 방법 에 들 어가 면 파라미터 가 ParamMap 에 봉 인 된 것 을 볼 수 있 습 니 다.
    在这里插入图片描述
    해결 방법
  • @Param 주 해 를 사용 하지 않 습 니 다:여러 개의 인자(또는 여러 개의 javaBean)를 전달 할 때 page 속성 을 포함 하 는 실체 클래스 를 사용 하여 봉인 할 수 있 습 니 다
  • @Param 주석 사용:수요 에 따라BaseInterceptor클래스 의convertParameter방법 을 수정 하여 해석page대상 을 null 로 하지 않 으 면 됩 니 다
  • Mybatis 의@Param()주해 로 인해 페이지 가 효력 을 잃 는 문 제 를 해결 하 는 이 글 은 여기까지 소개 합 니 다.더 많은 Mybatis 페이지 가 효력 을 잃 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기