【MyBatis&MyBatis-plus】ページング・クエリーは、合計数とデータを同時に返す2回のクエリーを回避します.

5446 ワード

mapperのxmlファイルは、次のように書くことができます.
	
	<resultMap type="java.lang.Integer" id="count">
		<result column="total"/>
	resultMap>
	
	
	<select id="selectPage" resultMap="    resultMap,count">
		SELECT SQL_CALC_FOUND_ROWS * FROM       
		WHERE ID in (SELECT ID from (SELECT ID FROM A LIMIT ${(pageNo-1)*pageSize},#{pageSize}) AS t)		
		order by ID;
		
		SELECT FOUND_ROWS(*) AS total;
	select>	

mapperインタフェース:
List<Object> selectPage(@Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);

サービス層:
Mapper    .selectPage(Integer pageNo,Integer pageSize);

コントロール層:
List<Object> list = Service  .selectPage(pageNo,pageSize);
List<    > wcenters = (List<    >) list.get(0); //    
Integer total = ((List<Integer>) list.get(1)).get(0);//  

注意:使用時にはプロファイルでsqlのマルチステートメント実行を許可するように設定する必要があります:allowMultiQueries=true、sqlのurlにこの構成を加えればいいです.