MyBatis limit 페이지 설정 의 실현

잘못된 쓰기:

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
 SELECT
 a.*,
 FROM
 tb_user a
 WHERE 1=1
 <if test="ids != null and ids.size()!=0">
  AND a.id IN
  <foreach collection="ids" item="id" index="index"
     open="(" close=")" separator=",">
   #{id}
  </foreach>
 </if>
 <if test="statusList != null and statusList.size()!=0">
  AND a.status IN
  <foreach collection="statusList" item="status" index="index"
     open="(" close=")" separator=",">
   #{status}
  </foreach>
 </if>
 ORDER BY a.create_time desc
 LIMIT (#{pageNo}-1)*#{pageSize},#{pageSize}; //   
</select>

 MyBatis 에서 LIMIT 이후 문장 에서 허용 되 지 않 는 변 수 는 산수 연산 을 허용 하지 않 아 오 류 를 보고 합 니 다.
 올 바른 쓰기 1:

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
 SELECT
 a.*,
 FROM
 tb_user a
 WHERE 1=1
 <if test="ids != null and ids.size()!=0">
  AND a.id IN
  <foreach collection="ids" item="id" index="index"
     open="(" close=")" separator=",">
   #{id}
  </foreach>
 </if>
 <if test="statusList != null and statusList.size()!=0">
  AND a.status IN
  <foreach collection="statusList" item="status" index="index"
     open="(" close=")" separator=",">
   #{status}
  </foreach>
 </if>
 ORDER BY a.create_time desc
 LIMIT ${(pageNo-1)*pageSize},${pageSize}; (  )
</select>
 정확 한 쓰기 2:(추천)

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
 SELECT
 a.*,
 FROM
 tb_user a
 WHERE 1=1
 <if test="ids != null and ids.size()!=0">
  AND a.id IN
  <foreach collection="ids" item="id" index="index"
     open="(" close=")" separator=",">
   #{id}
  </foreach>
 </if>
 <if test="statusList != null and statusList.size()!=0">
  AND a.status IN
  <foreach collection="statusList" item="status" index="index"
     open="(" close=")" separator=",">
   #{status}
  </foreach>
 </if>
 ORDER BY a.create_time desc
 LIMIT #{offSet},#{limit}; (  ,     )
</select>
 분석:방법 2 의 쓰기 방법 은 인자 에 두 개의 get 함 수 를 추가 로 설정 해 야 합 니 다.다음 과 같 습 니 다.

@Data
public class QueryParameterVO {
 
 private List<String> ids;
 
 private List<Integer> statusList;
 
 //        
 private int pageNo; //  1  
 
 //      
 private int pageSize;
 
 //       
 private int offSet;
 
 //         
 private int limit;
 
 //     offSet limit get  
 public int getOffSet() {
  return (pageNo-1)*pageSize;
 }
 
 public int getLimit() {
  return pageSize;
 }
}
MyBatis limit 페이지 설정 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 MyBatis limit 페이지 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기