范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MybatisPlus与前端分页工具结合实现

  虽然MybatisPlus提供了PaginationInnerInterceptor插件用来分页,并且该插件使用起来也还不错,但是我们开发项目的时候总是希望前后端搭配干活,实现一些好用的功能。
  比如说前端表单点击表头排序,这个功能我们就可以结合分页插件完成。而且我们现在很多时候会开发多端项目,在不同前端使用不同组件适配后端接口的时候,总可能遇到命名方式不一致的问题,比如A前端框架中当前页叫currPage,B框架中叫page等情况。基于这样的实际情况,我们需要对项目中MybatisPlus的分页进行一定程度的封装,让它能满足我们不同情况下的实际需要。
  首先是分页插件的配置@Configuration public class MPConfig {      @Bean     public MybatisPlusInterceptor mybatisPlusInterceptor() {         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));         return interceptor;     } }
  配置好分页插件以后MybatisPlus就支持分页了,可以使用service的page方法或者mapper的selectPage方法进行分页。这两个方法都需要传入com.baomidou.mybatisplus.extension.plugins.pagination.Page对象,这个对象也就是实际用来分页的参数对象了。我们可以在这个对象中设置分页的页数,每页的数据数量,同时也可以设置排序的字段、排序的方式。但是排序字段是直接通过字符串连接的方式填写在sql中的,所以是存在sql注入的风险的,所以我们需要个过滤SQL注入工具类,我参考了JeecgBoot中的工具类,稍作修改@Slf4j public class SqlUtil {      private final static String xssStr = ""|and |exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+";      public static void injection(String value) {         if (value == null || "".equals(value)) {             return;         }         value = value.toLowerCase();         String[] xssArr = xssStr.split("|");          for (String xss:xssArr) {             if(value.contains(xss)){                 log.error("可能存在SQL注入风险:存在SQL注入关键词[{}]  值[{}]",xss,value);                 throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);             }         }      }      public static void injection(String[] values) {         String[] xssArr = xssStr.split("|");         for (String value : values) {             if (value == null || "".equals(value)) {                 return;             }             value = value.toLowerCase();              for (String xss:xssArr) {                 if(value.contains(xss)){                     log.error("可能存在SQL注入风险:存在SQL注入关键词[{}]  值[{}]",xss,value);                     throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);                 }             }         }     }  }
  com.baomidou.mybatisplus.extension.plugins.pagination.Page这个分页工具只是提供了分页的功能,但是并不能很方便的直接拿来使用,所以我封装了一个工具类,用来通过我们写好的配置从参数中获取分页需要的信息以及配合前端Table排序的参数信息,并且过滤了SQL注入public class Constant {     /**      * 当前页码      */     public static final String PAGE = "page";     /**      * 每页显示记录数      */     public static final String LIMIT = "pageSize";     /**      * 排序字段      */     public static final String ORDER_FIELD = "prop";     /**      * 排序方式      */     public static final String ORDER = "order";     /**      *  升序      */     public static final String ASC = "ascending";  }  public class PageParams extends Page{     public PageParams(Map params){         super(getCurrPage(params),getPageSize(params));          // 排序         String orderField = (String)params.get(Constant.ORDER_FIELD);         String order = (String)params.get(Constant.ORDER);          if(StrUtil.isNotEmpty(orderField) && StrUtil.isNotEmpty(order)){             // SQL 注入过滤             SqlUtil.injection(orderField);             // 设置排序方式             if(Constant.ASC.equals(order)){                 addOrder(OrderItem.asc(orderField));             }else {                 addOrder(OrderItem.desc(orderField));             }         }     }      public PageParams(){         super(getCurrPage(null),getPageSize(null));     }      private static Long getCurrPage(Map params){         if(params != null && params.get(Constant.PAGE) != null){             return Long.parseLong((String)params.get(Constant.PAGE));         }         return 1L;     }      private static Long getPageSize(Map params){         if(params != null && params.get(Constant.LIMIT) != null){             return Long.parseLong((String)params.get(Constant.LIMIT));         }         return 10L;     } }
  相同的,不同的Table框架中接收的数据格式也有一些差别,我们分页方法返回的com.baomidou.mybatisplus.core.metadata.IPage也不能满足我们的格式要求。所以根据实际情况封装一个工具类,用来返回我们需要的数据格式@Data public class PageResult implements Serializable {      public PageResult(IPage<?> page){         this.page = page.getCurrent();         this.pageSize = page.getSize();         this.total = page.getTotal();         this.rows = page.getRecords();     }      private Long page;     private Long pageSize;     private Long total;     private List<?> rows; }
  最后分页调用的时候就变得简单了@GetMapping("/list") public SaResult list(@RequestParam Mapparams){      IPage page = userService.page(new PageParams(params),new LambdaQueryWrapper());      return SaResult.data(new PageResult(page)); }

有的人以高通芯片性能强于麒麟芯片而感到自豪,你怎么看?苹果手机作的好是!好!高通芯片作的好!是!好!但是!有些人说的时候总给人很自豪的感觉!你是中国人如果所有国人都想这些人一样早就忘国了!爱国和买什么东西无关!和去哪里旅游无关!和支持为什么移动宽带免费送,很多人还花钱装电信网络?昨天也发了,移动坑人,虚假宣传还价钱高我一直用的联通100m单宽带480每年,移动经常给我打电话送免费宽带,不敢要呀,作为接近20年的移动老用户深知移动套路太多,真没有那么多精力跟为什么现在这么多人借网贷?我最初的时候只有一张信用卡那时候网贷还不是特别流行我也从来没有想到过有一天我会因为信用卡欠了十多万的债务这其中网贷占了百分之七十信用卡的额度开始并不高我也学着大家刷卡取现额度越来越随身wifi怎么选择大家一起走进看看httpszhuanlan。zhihu。comp440281203随着5G时代的到来,随身wifi真是被所有人津津乐道的话题!在2008年华为中兴等品牌都陆续推出过随身wifi,销负责人离职Facebook加密货币前途难料披着羊皮的狼,德国前财政部长当选总理朔尔茨曾这样形容Facebook的加密货币项目。不过现在看来,这匹狼的未来着实有点悬了。且不说全球监管层持续不断的围堵,现在就连项目领头人都打起对比了十几款词典笔后,我终于找到了性价比最高的那一款一直以来英语都是我的弱项,大学考四六级把我弄得焦头烂额,很多同学当时都考研了,可是因为有英语这门课程我对于考研望而止步,这点成为了我人生的一大遗憾。如今的我已经成为一个宝妈,对于孩教你如果选择安防监控现在国内基本村村通网,给自己家里装个监控的想法的人也越来越多,那么该怎么买,怎么选?是大家所关心的事了,首先是品牌,比如海康大华参数实标但价格是比较贵的,剩下的比如天视通,捷高,小iPhone14大曝光,早买iPhone13的肠子都悔青了吗?这是个啥问题?觉得好再换呗穷人的问题,没必要回答居然出到14了?终于能用我媳妇的6s了一能买13的,都是经济情况比较好的。二早买,早用,不存在悔青的情况,大部分是这样。三14有它的刚刚签约,小米汽车总部落户北京经开区11月27日,北京经济技术开发区管委会与小米科技签约仪式举行,随着双方签订合作协议,正式宣告小米汽车落户北京经开区。该项目将建设小米汽车总部基地和销售总部研发总部,将分两期建设年产司马南遭受到死亡威胁和围攻,威胁者被抓到会被判刑吗?支持敢于顶住压力为国为民代言的司马老师!我们的社会需要这样敢于为民发声的勇士!相信大多数民众都是你坚强的后盾!若有人或势力敢给司马老师玩阴的来害他,我们大多数民众必不放过之,虽远必联想事件企业家的原罪,该如何救赎?全国网民不是针对联想,而是让杨柳二人,个人做个合理媒体解释。但二人硬是把私人问题,转移到联想,不得不让网民更加联想!他们的不发言,总不能让全体网民背弃联想多年的广告语吧!人类失去联
谁还在消费智能音箱?图片来源视觉中国文丨智能相对论,作者丨佘凯文智能音箱又出事了,肇事者还是Echo。日前,一位美国用户爆料称亚马逊Alex智能语音助手通过她家里的Echo智能音箱向她10岁的孩子提出宁德时代将推出巧克力换电块适配全球80车型金一丹中国证券报中证网中证网讯(记者金一丹)1月18日,宁德时代在换电品牌EVOGO发布会上宣布,专门为实现共享换电开发量产巧克力换电块,具有小而高能自由组合极简设计三大特点。据介区块链中的神拜占庭将军区块链技术的诞生已经有20多年了,其中有许多专有名词,同时也富含着许多有趣的故事,拜占庭将军绝对是这些名词里面最耀眼的一个。拜占庭将军并不是特指某一个人,他们也没啥出彩的地方,但是跨境早知道哥伦比亚取消最高200美元进口增值税豁免PART1今日头条01hr哥伦比亚取消最高200美元进口增值税豁免!跨境购物更加方便近日哥伦比亚政府对未与该国签订自由贸易协定的国家,取消了最高200美元的进口增值税豁免。也就是说避免Amazon帐号被封请了解亚马逊TOS指南在跨境圈混的同行们,应该很了解去年沸沸扬扬的亚马逊封号事件。其实违反亚马逊政策导致封号,一直都是存在的,只不过是看亚马逊下不下重手。想要在这个平台长久地做下去,您都需要遵循亚马逊的京东年货节全民购年货,浙江购买力排名全国第七,看看都买了啥?钱江晚报小时新闻记者鲁佳春节的脚步越来越近,年货采购好了吗?1月18日,小时新闻记者从京东了解到,今年年货节期间,浙江消费者凭借不俗的消费力成功入围国内购买力排行榜前十,排名第7位18个示例详解Spring事务传播机制什么是事务传播机制事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播。举个例子,方法A是一个事务的方法,方法A执行的时候调用了方法B,此时方法B有无事务以新年版雷军请你超大杯即将播出,亚洲跑最快飞人苏炳添主题慢慢来中华网财经1月18日讯,在高龄到达巅峰,是种什么体验?人主要靠运气,还是靠实力?面对压力,死磕还是躺平?今日上午,小米CEO雷军表示推出雷军请你超大杯。雷军称,新年就要到了,这次的华为鸿蒙推广半年,2。2亿花粉升级新系统,问题开始集中暴露文JING审核子扬校正知秋鸿蒙系统发布后,华为一直保持高频率更新,讨论热度居高不下。根据余承东透露,鸿蒙系统登陆手机市场仅半年,已斩获2。2亿用户,成为全球第三大操作系统,成绩着实当下续航极佳的5款手机,出门不用带充电宝,可满足一整天的使用不知道大家发现一个问题没,那就是现在的手机厂商宣传新品的时候很喜欢以屏幕影像系统快充散热等方面,就连设计也能拿出来得瑟一波,所谓的LikePhone风格早就成为历史了。但是呢,你要新型国产操作系统,可在windows安装,用户好用,有点像WPS华为欧拉鸿蒙之后,新型操作系统浮出水面操作系统和芯片一样,都代表着科技的制高点,也引领着未来科技发展走向。这些都是关乎到我们每个人的大事!近几年,国内也不断涌现各类操作系统。比如我