• 独家首发,阿里内部纯手码spring boot项目,你学会了吗?


    #种一棵树最好的时间是十年前,其次是现在

    很多程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来。

    但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书、收藏没读的贴、mark 了之后再也没有关注过的文章越积越多,更别提每天面对各种技术分享或者微博里的新鲜玩意了。

    大多数人每天能留给自己学习的时间有限,这个阶段如何提升学习效率就成了要解决的重点。

    说说自己提升学习效率的心得,其实非常简单:体系化的学习。

    我曾经很喜欢看一些博客或者是一些 “看起来” 比较通俗易懂的文章,每天在微博微信里刷到什么技术文章就 mark 下来,基本上几分钟就能读完。可一段时间下来,虽然读了不少东西,但是还是有种在原地打转的状态,并没有感受到有什么实际的提高。

    最后实在忍不住,抱着厚书硬啃了一遍,突然有种豁然开朗的感觉:读书时自己学到的是一张完整的知识网络,每个知识点和其它内容相互联系和区别。这种全方位的理解比起一篇篇独立的文章,不知要高到哪里去了。

    在重复了几次痛苦的学习-梳理过程后,再去看一些独立的文章或者资料往往会事半功倍,因为能在体系内找到相对应的知识,甚至有时候一本书里一页只需要看一句话,点破那层窗户纸,就可以掌握新的知识。很多程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来。
    但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书、收藏没读的贴、mark 了之后再也没有关注过的文章越积越多,更别提每天面对各种技术分享或者微博里的新鲜玩意了。
    大多数人每天能留给自己学习的时间有限,这个阶段如何提升学习效率就成了要解决的重点。
    说说自己提升学习效率的心得,其实非常简单:体系化的学习。
    我曾经很喜欢看一些博客或者是一些 “看起来” 比较通俗易懂的文章,每天在微博微信里刷到什么技术文章就 mark 下来,基本上几分钟就能读完。可一段时间下来,虽然读了不少东西,但是还是有种在原地打转的状态,并没有感受到有什么实际的提高。
    最后实在忍不住,抱着厚书硬啃了一遍,突然有种豁然开朗的感觉:读书时自己学到的是一张完整的知识网络,每个知识点和其它内容相互联系和区别。这种全方位的理解比起一篇篇独立的文章,不知要高到哪里去了。
    在重复了几次痛苦的学习-梳理过程后,再去看一些独立的文章或者资料往往会事半功倍,因为能在体系内找到相对应的知识,甚至有时候一本书里一页只需要看一句话,点破那层窗户纸,就可以掌握新的知识。所以我建议你看文章博客,不能只看一篇,通透的、连续的学习,效果才是最佳的。

    在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍的时间写 count 和 select,幸好我们有 pagehelper 分页插件,pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Mapper.xml完全解耦,并以插件的形式实现,对Mybatis执行的流程进行了强化,这有效的避免了我们需要直接写分页SQL语句来实现分页功能。
    现在我把自己在项目中实现分页的方法总结如下:

    1.导入Maven依赖

    
    
    
        com.github.pagehelper
        pagehelper-spring-boot-starter
        1.3.0
    
    
    

    2.controller中分页方法

     /**
           * @Description: 分页查询
             * @Param: waterloggingPreventionDto
           * @return com.graphsafe.api.msg.RestMessage(封装的返回值信息)
           * @author songwp
           * @date 2021/11/2 15:00
           */
        @PostMapping(value = "getListForPage", produces = "application/json;charset=UTF-8")
        public RestMessage getListForPage(@RequestBody WaterloggingPreventionDto waterloggingPreventionDto){
            WaterloggingPreventionVo result = new WaterloggingPreventionVo();
            List list = waterloggingPreventionService.getListForPage(waterloggingPreventionDto);
            result.setWaterloggingPreventionList(list);
            if (null != waterloggingPreventionDto.getCount()){
                result.setTotal(waterloggingPreventionDto.getCount().intValue());
            }
            return new RestMessage(result);
        }
    
    

    3.service业务方法的实现

    @Override
        public List getListForPage(WaterloggingPreventionDto waterloggingPreventionDto) {
            List list = new ArrayList<>();
            if (waterloggingPreventionDto.getPage() != null && waterloggingPreventionDto.getLimit() != null){
                PageHelper.startPage(waterloggingPreventionDto.getPage(),waterloggingPreventionDto.getLimit());
                list = waterloggingPreventionMapper.getListForPage(waterloggingPreventionDto);
                PageInfo pageInfo = new PageInfo<>(list);
                waterloggingPreventionDto.setCount(pageInfo.getTotal());
            }else {
                list = waterloggingPreventionMapper.getListForPage(waterloggingPreventionDto);
            }
            return list;
        }
    
    

    4.serviceye业务方法接口

    /**
     * @Description: 
     * @ClassName: WaterloggingPreventionService
     * @Author: songwp
     * @Date: 2021/10/16 13:35
     */
    public interface WaterloggingPreventionService {
        List getListForPage(WaterloggingPreventionDto waterloggingPreventionDto);
    }
    
    

    5.Mapper方法接口

    /**
     * @Description: 
     * @ClassName: WaterloggingPreventionMapper
     * @Author: songwp
     * @Date: 2021/10/16 13:30
     */
    @Mapper
    public interface WaterloggingPreventionMapper {
        List getListForPage(WaterloggingPreventionDto waterloggingPreventionDto);
    
    }
    
    

    6.参数实体类

    /**
     * @author songwp
     * @Description:
     * @date 2021/10/29:47
     */
    @Data
    public class WaterloggingPreventionDto {
    
        @ApiModelProperty(value = "名称")
        private String name;
    
        //分页
        @ApiModelProperty(value = "当前页码")
        private Integer page; //当前页第一页是0
    
        @ApiModelProperty(value = "每页条数")
        private Integer limit;//每页步长
    
        @ApiModelProperty(value = "总条数")
        private Long count;//总条数
    }
    
    

    7.post数据测试分页展示:

    古今成大事者,不唯有超世之才,必有坚韧不拔之志!

  • 相关阅读:
    关于信息安全软考的记录5
    javaweb JAVA JSP销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上在线销售
    Haproxy集群调度器与部署
    Zabbix配置监控文件系统可用空间小于30GB自动告警
    python通过导入自定义dll实现显存释放
    TCP与UDP的区别
    基于51单片机交通灯带紧急开关+黄灯倒计时+可调时间
    STM32G070RBT6-MCU温度测量(ADC)
    Pr:首选项 - 媒体缓存
    STM32 HAL库DMA串口发送数据参考文章
  • 原文地址:https://blog.csdn.net/m0_70748381/article/details/127106530