IPage使用 大概

进行快速创建IPage对象 page是分页的要求,wrapper是分页的搜查要求 -- 这里的Query是一个封装

IPage<AppPregnancyEntity> page = this.page(new Query<AppPregnancyEntity>().getPage(params), queryWrapper);
public class Query<T> {

   public IPage<T> getPage(Map<String, Object> params) {
       return this.getPage(params, null, false);
  }

   public IPage<T> getPage(Map<String, Object> params, String defaultOrderField, boolean isAsc) {
       //分页参数
       long curPage = 1;
       long limit = 10;

       if(params.get(Constant.PAGE) != null){
           curPage = Long.parseLong((String)params.get(Constant.PAGE));
      }
       if(params.get(Constant.LIMIT) != null){
           limit = Long.parseLong((String)params.get(Constant.LIMIT));
      }

       //分页对象
       Page<T> page = new Page<>(curPage, limit);

       //分页参数
       params.put(Constant.PAGE, page);

       //排序字段
       //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
       String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD));
       String order = (String)params.get(Constant.ORDER);


       //前端字段排序
       if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){
           if(Constant.ASC.equalsIgnoreCase(order)) {
               return  page.addOrder(OrderItem.asc(orderField));
          }else {
               return page.addOrder(OrderItem.desc(orderField));
          }
      }

       //没有排序字段,则不排序
       if(StringUtils.isBlank(defaultOrderField)){
           return page;
      }

       //默认排序
       if(isAsc) {
           page.addOrder(OrderItem.asc(defaultOrderField));
      }else {
           page.addOrder(OrderItem.desc(defaultOrderField));
      }

       return page;
  }
}

 

如何跑起来? -- 以AppTrouble为例子 QueryWrapper具体看Mybatis-plus

1.serviceImpl

// 进行分页查询
       Page<AppTroubleEntity> hashMapPage = new Page<>(Integer.parseInt((String) params.get("page")), Integer.parseInt((String) params.get("limit")));

       IPage<AppTroubleEntity> page = appTroubleDao.selectAppTroubleMy(hashMapPage,wrapper);

2.appTroubleDao

@Mapper
@Repository
public interface AppTroubleDao extends BaseMapper<AppTroubleEntity> {

   /**
    * 肇事记录页面查询
    * @param page
    * @param queryWrapper
    * @return
    */
   IPage<AppTroubleEntity> selectAppTroubleMy(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper<AppTroubleEntity> queryWrapper);
}

3.appTroubleDao.xml

<select id="selectAppTroubleMy" resultType="com.uht.modules.app.entity.AppTroubleEntity">
      SELECT app_trouble.*,user_info.name as userName,sys_org.name AS communityStr
      FROM app_trouble
      INNER JOIN user_info ON app_trouble.user_id = user_info.id
      INNER JOIN sys_org ON app_trouble.community = sys_org.id
      ${ew.customSqlSegment}
   </select>

 

posted @   红烧鲈鱼  阅读(5514)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示